保证文件名的唯一性
在項目開發中,經常會有文件上傳和下載的功能,上傳的文件會保存在指定的地方,比如,mongodb數據庫中、FTP文件服務器中、或者保存在某個路徑下,需要保證上傳文件名稱的唯一性
一般的方法就是使用時間戳、或者使用GUID
這里,在上傳文件時,命名使用的是獲取當前日期時間+Session的ID+文件名稱
比如,上傳文件“文檔信息.txt”,效果如下
前臺代碼
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm.aspx.cs" Inherits="WebDropzone.WebForm" %><!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"><meta name="viewport" content="width=device-width" /><title></title> </head> <body><form id="form1" runat="server"><div><table style="width: 343px"><tr><td style="width: 100px">文件上傳判斷</td><td style="width: 100px"></td></tr><tr><td style="width: 100px"><asp:FileUpload ID="FileUpload1" runat="server" Width="400px" /></td><td style="width: 100px"><asp:Button ID="Button1" runat="server" OnClick="bt_upload_Click" Text="上傳"/></td></tr><tr><td style="width: 100px"><asp:Label ID="lb_info" runat="server" ForeColor="Red" Width="183px"></asp:Label></td><td style="width: 100px"></td></tr></table></div></form> </body> </html>后臺代碼
using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Web; using System.Web.Mvc; using System.Web.UI.WebControls;namespace WebDropzone {public partial class WebForm : System.Web.UI.Page, IHttpHandler{protected void Page_Load(object sender, EventArgs e){}protected void bt_upload_Click(object sender, EventArgs e){try{if (FileUpload1.PostedFile.FileName == ""){this.lb_info.Text = "請選擇文件!";}else{string filepath = FileUpload1.PostedFile.FileName;string filename = filepath.Substring(filepath.LastIndexOf("\\") + 1);string serverpath = Server.MapPath("File/") + System.DateTime.Now.ToString("yyy-MM-dd-hh-mm-ss") + Session.SessionID + filename;FileUpload1.PostedFile.SaveAs(serverpath);this.lb_info.Text = "上傳成功!";}}catch (Exception error){this.lb_info.Text = "上傳發生錯誤!原因:" + error.ToString();}}} }關鍵代碼,就兩句如下
string filename = filepath.Substring(filepath.LastIndexOf("\\") + 1); string serverpath = Server.MapPath("File/") + System.DateTime.Now.ToString("yyy-MM-dd-hh-mm-ss") + Session.SessionID + filename;如果,這樣也可能重復的話,可以在文件名中再添加GUID
總結
- 上一篇: 检查文件类型
- 下一篇: Tomcat启动一闪而过