C# 選擇本機檔案並上傳
參考自:
http://www.dotblogs.com.tw/puma/archive/2008/11/07/5910.aspx
http://www.codeproject.com/Articles/19398/Example-for-FolderBrowserDialog-in-C
http://www.dotblogs.com.tw/mis2000lab/archive/2011/09/26/fileupload_serverpath_2011.aspx
選擇本機檔案的兩種方式:
1.利用FolderBrowserDialog或OpenFileDialog
<asp:TextBox ID="txtdfolder" runat="server"></asp:TextBox> <asp:Button ID="ButtonSelectFolder" runat="server" OnClick="btnSelectFolder_Click" text="select folder" /> <asp:TextBox ID="txtdfile" runat="server"></asp:TextBox> <asp:Button ID="ButtonSelectFile" runat="server" OnClick="btnSelectFile_Click" text="select file" />
public partial class SelectFolder : Form { public SelectFolder() { InitializeComponent(); } private void btnSelectFolder_Click(object sender, EventArgs e) { FolderBrowserDialog path = new FolderBrowserDialog(); // Basically, there are two additional settings available to make the dialog more customized. First, the property // ShowNewFolderButton determines whether the user can create a new folder or not. this.path.ShowNewFolderButton = false; // Second, the property RootFolder defines the top level folder of the dialog, i.e. the folder which will be shown initially. this.folderBrowserDialog.RootFolder = System.Environment.SpecialFolder.MyComputer; DialogResult result=path.ShowDialog(); if (result==DialogResult.OK) { // the code here will be executed if the user presses Open in the dialog. this.txtPath.Text = path.SelectedPath; } } private void btnSelectFile_Click(object sender, EventArgs e) { OpenFileDialog file = new OpenFileDialog(); file.ShowDialog(); this.txtFile.Text = file.SafeFileName; } }
2. 利用asp:FileUpload
<asp:FileUpload runat="server" ID="uploadImage" /> <asp:Button ID="btnOK" runat="server" OnClick="btnOK_Click" />
protected void btnOK_Click(object sender, EventArgs e) { if (uploadImage.HasFile) { string fileName = uploadImage.FileName; //********************************************************************* //*** 方法一 ***** //-- 註解:先設定好檔案上傳的路徑,這是Web Server電腦上的硬碟「實體」目錄。 // C#語法在撰寫磁碟的目錄位置時,請留意以下的寫法: //String savePath = "c:\\temp\\uploads\\"; //*** 方法二 ***** String savePath = Server.MapPath("~/Book_Sample/Ch18_FileUpload/Uploads/"); //--網站上的 URL路徑。 Server.MapPath() 轉換成Web Server電腦上的硬碟「實體」目錄。 //*** 方法三 ***** //--註解:網站上的目錄路徑。所以不寫磁碟名稱(不寫 “實體”路徑)。 //--以下的 URL路徑,請依照實際狀況,進行修改。否則程式會報錯! //String saveDir = "\\Book_Sample\\Ch18_FileUpload\\Uploads\\"; //String appPath = Request.PhysicalApplicationPath; ////-- appPath是網站 "根"目錄「轉換成」Server端硬碟路徑。 //String savePath = appPath + saveDir; //********************************************************************* string savePath = "c:\\Chris\\test_upload\\"; String saveResult = savePath + fileName; fuImage.SaveAs(saveResult); } uploadImage.Dispose(); }