[asp.net, c#]如何在asp.net中上傳檔案(使用web control或不使用web control)

包含 c#, asp.net, vb.net, delphi.net 等 .net framework 的開發討論區
回覆文章
頭像
tim
文章: 1380
註冊時間: 2008年 11月 26日, 00:49

[asp.net, c#]如何在asp.net中上傳檔案(使用web control或不使用web control)

文章 tim »

我在們 asp.net 中, 可以很方便地上傳檔案, 利用 runat server 的 web control : <input id="filMyFile" type="file" runat="server"> 來進行設置, 配合程式的 System.Web.UI.HtmlControls.HtmlInputFile control 搭配 protected HtmlInputFile filMyFile;
if( filMyFile.PostedFile != null )
{
// File was sent
}
else
{
// No file
}
再利用 PostedFile 的 SaveAs 方法來進行寫入檔案的動作, 但以上的作法要配合 runat server 的 html web control 來進行, 若是要搭配 asp 或是單純的 html 來進行寫入檔案, 應該如何進行呢? 可以利用 Request.Files 來進行, 而且可以同時傳遞多檔, 更容易地進行處理, 以下為取出所有檔案並存檔的一個範例程式:

代碼: 選擇全部

     
      string saveFiles() { 
        string strMessage = ""; 
        string strFileName;     
        HttpPostedFile objFile; 
             
        for (int i=0; i<Request.Files.Count; i++) { 
          objFile = Request.Files[i]; 
          if (objFile.FileName != "") { 
            strFileName = objFile.FileName; 
            strFileName = strFileName.Substring(strFileName.LastIndexOf("\")+1); 
            try { 
              objFile.SaveAs("c:\temp\"+strFileName); 
              strMessage+= "Uploaded: c:\temp\"+strFileName+"<br>"; 
            } 
            catch (Exception err) { 
              strMessage+= "Failed uploading "+strFileName+": "+err.ToString()+"<br>";   
            } 
          } 
           
        }     
        return strMessage; 
      }   

如此一來便能不使用 runat server 的元件來進行 asp.net file upload 的功能!!

參考文件,
1. 搭配 runat server 的作法,
http://www.codeproject.com/aspnet/fileupload.asp
http://www.freevbcode.com/ShowCode.Asp?ID=2136
http://msdn.microsoft.com/library/defau ... stopic.asp
http://www.wimdows.net/articles/printme.aspx?aid=4

2. 不使用 runat server 就是利用
http://www.wimdows.net/articles/printme.aspx?aid=4
的第二部分, multi-file 的 upload 來進行撰寫的, 其實就是利用了 Response.Files 來進行的, 如此一來, 前一頁無論是 asp 或是 html 等靜態頁面, 與本 aspx 頁面無關的 web page 皆可進行 file upload, 將能更方便的操作 file upload!!
多多留言, 整理文章, 把經驗累積下來.....
頭像
tim
文章: 1380
註冊時間: 2008年 11月 26日, 00:49

Re: [asp.net, c#]如何在asp.net中上傳檔案(使用web control或不使用web contro

文章 tim »

在使用 asp.net 做為接收 upload 的檔案時, 有一些設置要進行, 以便於上傳大檔案

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.web>
<customErrors mode="Off"/>
<httpRuntime maxRequestLength="30720" executionTimeout="3600"/>
</system.web>
</configuration>

上面的 maxRequestLength 單位是 kb, 由於預設是 4096, 必需依需要調整, executionTimeout 則是 timeout 時間, 預設是 90, 也要依實際需要調整!
多多留言, 整理文章, 把經驗累積下來.....
回覆文章