首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> ASP.NET 基礎 >> 關於ASP.NET

ASP.NET 2.0 上傳圖片並自動建立用戶專屬資料夾

     編輯:關於ASP.NET

常見需求:用戶上傳圖片,伺服器依用戶 ID 自動建立專屬資料夾存放,並以時間+隨機數重命名避免衝突。

前端頁面

<asp:FileUpload ID="FileUpload1" runat="server" />
<asp:Button ID="btnUpload" Text="上傳並建立資料夾" OnClick="btnUpload_Click" runat="server" />

後端核心代碼

protected void btnUpload_Click(object sender, EventArgs e)
{
    if (!FileUpload1.HasFile) return;

    // 1. 取得副檔名
    string ext = Path.GetExtension(FileUpload1.FileName); // 含 .

    // 2. 產生唯一檔名:yyyyMMddHHmmss + 兩位隨機數
    string fileName = DateTime.Now.ToString("yyyyMMddHHmmss") + new Random().Next(10, 99) + ext;

    // 3. 用戶專屬資料夾(實務上用 UserID)
    string userDir = "User_" + Session["UserID"]; // 例:User_1001
    string saveRoot = Server.MapPath("~/UploadFiles");
    string userPath = Path.Combine(saveRoot, userDir, "ProductImages");

    // 4. 確保資料夾存在
    if (!Directory.Exists(userPath)) Directory.CreateDirectory(userPath);

    // 5. 儲存檔案
    string fullPath = Path.Combine(userPath, fileName);
    FileUpload1.SaveAs(fullPath);

    // 6. 回傳虛擬路徑存入資料庫
    string virtualPath = $"/UploadFiles/{userDir}/ProductImages/{fileName}";
    // db.SaveImagePath(virtualPath);
    Response.Write("上傳成功:" + virtualPath);
}

關鍵點

  • FileUpload.HasFile 必須先判斷,否則 SaveAs 會拋出例外。
  • Path.Combine 自動處理路徑分隔符,跨平台更安全。
  • 資料夾命名建議用不可預測的 ID(Guid/長整數),避免遍歷攻擊。
  • 生產環境務必驗證副檔名、MIME 類型、檔案大小,防止惡意上傳。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved