I check <httpRuntime> setting, it already set.
Whatever I set how big to maxRequestLength and executionTimeout, it still
can't work.
I upload this big file(about 5xMB) to server's hard disk, it could upload
it.
But, I upload this file into DB, it couldn't do it.
My codes are following codes.
Thanks.
--------------------------
UploadFile.aspx:
--------------------------
<%@ Page language="c#" Codebehind="UploadFile.aspx.cs"
AutoEventWireup="false" Inherits="UploadFile.WebForm1" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
<HEAD>
<title>WebForm1</title>
<meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">
<meta name="CODE_LANGUAGE" Content="C#">
<meta name="vs_defaultClientScript" content="JavaScript">
<meta name="vs_targetSchema"
content="
http://schemas.microsoft.com/intellisense/ie5">
</HEAD>
<body MS_POSITIONING="GridLayout">
<form id="Form1" method="post" runat="server">
<asp:Label ID="msg" Runat="server" /><br>
File Path: <input type="file" id="txtPath" runat="server"><p></p>
<asp:Button id="btnSave" runat="server" Text="Save"></asp:Button>
</form>
</body>
</HTML>
--------------------------
UploadFile.aspx.cs:
--------------------------
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.IO;
using System.Data.SqlClient;
namespace UploadFile
{
/// <summary>
/// WebForm1 çš„æ‘˜è¦æè¿°ã€‚
/// </summary>
public class WebForm1 : System.Web.UI.Page
{
protected System.Web.UI.HtmlControls.HtmlInputFile txtPath;
protected System.Web.UI.WebControls.Label msg;
protected System.Web.UI.WebControls.Button btnSave;
private void Page_Load(object sender, System.EventArgs e)
{
// 在這裡放置使用者程å¼ç¢¼ä»¥åˆå§‹åŒ–ç¶²é
msg.Text="";
}
#region Web Form è¨è¨ˆå·¥å…·ç”¢ç”Ÿçš„程å¼ç¢¼
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: æ¤ç‚º ASP.NET Web Form è¨è¨ˆå·¥å…·æ‰€éœ€çš„呼å«ã€‚
//
InitializeComponent();
base.OnInit(e);
}
/// <summary>
/// æ¤ç‚ºè¨è¨ˆå·¥å…·æ”¯æ´æ‰€å¿…é ˆçš„æ–¹æ³• - 請勿使用程å¼ç¢¼ç·¨è¼¯å™¨ä¿®æ”¹
/// 這個方法的內容。
/// </summary>
private void InitializeComponent()
{
this.btnSave.Click += new System.EventHandler(this.btnSave_Click);
this.Load += new System.EventHandler(this.Page_Load);
}
#endregion
private void btnSave_Click(object sender, System.EventArgs e)
{
if(txtPath.Value.Length > 0)
{
try
{
msg.Text="";
FileStream f=new FileStream(txtPath.Value, FileMode.Open);
BinaryReader br=new BinaryReader(f);
byte[] myPic=br.ReadBytes((int)f.Length);
br.Close();
msg.Text="File->Byte[]: OK";
//return;
try
{
string conn_str="server=DV-PC-377;database=Test;uid=test;pwd=test;";
SqlConnection conn = new SqlConnection(conn_str);
conn.Open();
SqlCommand cmd=new SqlCommand("Insert Into MyPicture(PicPath,Pic)
Values(@Path, @Pic)", conn);
cmd.Parameters.Add("@Path", SqlDbType.VarChar,
50).Value=txtPath.Value;
cmd.Parameters.Add("@Pic", SqlDbType.Image).Value=myPic;
cmd.ExecuteNonQuery();
conn.Close();
Response.Write(conn.State.ToString()+"<br>");
msg.Text="Byte[]->DB: OK";
return;
}
catch(Exception exc2)
{
msg.Text="Byte[]->DB: "+exc2.Message;
}
}
catch(Exception exc)
{
msg.Text="File->Byte[]: "+exc.Message;
}
}
}
}
}
--------------------------
Web.config:
--------------------------
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.web>
<httpRuntime maxRequestLength="400000" executionTimeout="1800" />
<!-- å‹•æ…‹åµéŒ¯ç·¨è¯
è¨å®š compilation debug="true" 以啟用 ASPX åµéŒ¯ã€‚å¦å‰‡ï¼Œå°‡é€™å€‹å€¼è¨å®š
為
false å°‡å¯å¢žé€²é€™å€‹æ‡‰ç”¨ç¨‹å¼çš„ Runtime 效能。
è¨å®š compilation debug="true" 會將åµéŒ¯ç¬¦è™Ÿ (.pdb 資訊) æ’入編è¯çš„
ç¶²é 。
這樣將會建立較大的檔案並使執行速度變慢。
一般åªåœ¨åµéŒ¯æ™‚將這個值è¨ç‚º true,其他情æ³éƒ½è¨ç‚º false。
如需詳細資訊,請åƒé–±
åµéŒ¯ ASP.NET 檔案相關的文件。
-->
<compilation
defaultLanguage="c#"
debug="true"
/>
<!-- 自訂錯誤訊æ¯
è¨å®š customErrors mode="On" 或 "RemoteOnly" 來啟用自訂錯誤訊æ¯ï¼Œ
"Off" 則為åœç”¨ã€‚
è«‹å°æ¯å€‹æ‚¨è¦è™•ç†çš„éŒ¯èª¤ï¼ŒåŠ å…¥ç›¸å°æ‡‰çš„ <error> 標記。
"On" æ°¸é 顯示自訂 (易讀) 訊æ¯ã€‚
"Off" æ°¸é 顯示詳細的 ASP.NET 錯誤資訊。
"RemoteOnly" 僅顯示自訂 (易讀) 訊æ¯çµ¦ä¸åœ¨å€åŸŸ Web 伺æœå™¨ä¸Šçš„使用
者。
é‡å°å®‰å…¨æ€§ç›®çš„ï¼Œå»ºè°æ‚¨ä½¿ç”¨é€™é …è¨å®šï¼Œ
é€™æ¨£åæ‚¨å°±ä¸æœƒå°‡æ‡‰ç”¨ç¨‹å¼çš„詳細資訊顯示給é 端用戶端。
-->
<customErrors
mode="RemoteOnly"
/>
<!-- é©—è‰
這個倿®µå°‡è¨å®šæ‡‰ç”¨ç¨‹å¼çš„é©—è‰åŽŸå‰‡ã€‚å¯èƒ½çš„æ¨¡å¼åŒ…括 "Windows"ã€
"Forms"ã€"Passport" 與 "None"
"None" 沒有執行任何的驗è‰ã€‚
"Windows" IIS æœƒæ ¹æ“šå…¶é‡å°æ‡‰ç”¨ç¨‹å¼æ‰€åšçš„è¨å®šä¾†åŸ·è¡Œé©—è‰ (åŸºæœ¬ã€æ‘˜è¦
弿ˆ–æ•´åˆå¼ Windows é©—è‰)
IIS 的匿åå˜å–åŠŸèƒ½å¿…é ˆåœç”¨ã€‚
"Forms" æä¾›è‡ªè¨‚表單 (ç¶²é ) 讓使用者輸入他們的憑è‰ï¼Œ
然後在應用程å¼ä¸é©—è‰å…¶æ†‘è‰ã€‚ä½¿ç”¨è€…æ†‘è‰ Token 儲å˜åœ¨ Cookie ä¸ã€‚
"Passport" é©—è‰æ˜¯ç¶“ç”± Microsoft 所æä¾›çš„ä¸å¤®é©—è‰æœå‹™è€ŒåŸ·è¡Œï¼Œ
æ¤ä¸å¤®é©—è‰æœå‹™å¯æ›¿æˆå“¡ç¶²ç«™æä¾›å–®ä¸€ç™»å…¥èˆ‡æ ¸å¿ƒè¨å®šæª”æœå‹™ã€‚
-->
<authentication mode="Windows" />
<!-- 授權
這個倿®µå°‡è¨å®šæ‡‰ç”¨ç¨‹å¼çš„æŽˆæ¬ŠåŽŸå‰‡ã€‚æ‚¨å¯ä»¥å…許或拒絕ä¸åŒä½¿ç”¨è€…或角色
å˜å–應用程å¼è³‡æºã€‚
è¬ç”¨å—å…ƒ: "*" 代表所有的人ã€"?" 代表匿å (未驗è‰çš„) 使用者。
-->
<authorization>
<allow users="*" /> <!-- å…許所有使用者 -->
<!-- <allow users="[使用逗號分隔的使用者清單]"
roles="[使用逗號分隔的角色清單]"/>
<deny users="[使用逗號分隔的使用者清單]"
roles="[使用逗號分隔的角色清單]"/>
-->
</authorization>
<!-- 應用程å¼å±¤ç´šè¿½è¹¤è¨˜éŒ„
應用程å¼å±¤ç´šè¿½è¹¤å•Ÿç”¨æ‡‰ç”¨ç¨‹å¼ä¸æ¯ä¸€é é¢çš„追蹤記錄檔輸出。
è¨å®š trace enabled="true" 將啟用應用程å¼è¿½è¹¤è¨˜éŒ„。如果
pageOutput="true",追蹤資訊將顯示
在æ¯ä¸€é é¢çš„下方。æ¤å¤–,您也å¯ä»¥å¾ž Web 應用程å¼çš„æ ¹ç›®éŒ„é€éŽç€è¦½
"trace.axd" é é¢çš„æ–¹å¼ä¾†æª¢è¦–
應用程å¼çš„追蹤記錄檔。
-->
<trace
enabled="false"
requestLimit="10"
pageOutput="false"
traceMode="SortByTime"
localOnly="true"
/>
<!-- 工作階段狀態è¨å®š
æ ¹æ“šé è¨ï¼ŒASP.NET 會使用 Cookie 來è˜åˆ¥å“ªäº›è¦æ±‚是屬於æŸå€‹ç‰¹å®šå·¥ä½œéšŽ
段。
如果無法使用 Cookie,您也å¯ä»¥å°‡å·¥ä½œéšŽæ®µè˜åˆ¥é …åŠ å…¥åˆ° URL 來追蹤工作
階段。
è‹¥è¦åœç”¨ Cookie,請è¨å®š sessionState cookieless="true"。
-->
<sessionState
mode="InProc"
stateConnectionString="tcpip=127.0.0.1:42424"
sqlConnectionString="data
source=127.0.0.1;Trusted_Connection=yes"
cookieless="false"
timeout="20"
/>
<!-- å…¨çƒåŒ–è¨å®š
æ¤å€æ®µç”¨ä¾†è¨å®šæ‡‰ç”¨ç¨‹å¼å…¨çƒåŒ–é¸é …。
-->
<globalization
requestEncoding="utf-8"
responseEncoding="utf-8"
/>
</system.web>
</configuration>