Upload файлов с уникальными именами в ASP.NET
Христофоров Юрий
Задача: необходимо загружать файлы в папку upload на сервере с уникальными именами. Т.е. при загрузке двух файлов с одинаковыми именами они должны сохраняться под уникальными именами и не перезаписывать друг друга. В ASP.NET эта задача легко решается с помощью класса Guid. Т.о. файл будет сохранен например под именем fe008e1a-f07c-4263-8dc4-67f042a8cbdb_valley.jpg.
Папка upload должна иметь NTFS права на чтение/запись/изменение для интернет-пользователя.
Файл upload_cs.aspx (написан на C#):
<%@ Page Language="C#" %> <script language="C#" runat="server"> void Upload_Click(Object sender, EventArgs e) { string strFileName, strRootUpload, strUniqueName; int index; strRootUpload = Server.MapPath("./upload"); lblMessage.Text = ""; if (fileInp.PostedFile != null) { try { strFileName = fileInp.PostedFile.FileName; if (strFileName != "") { strFileName = strFileName.Replace("/", "\"); index = strFileName.LastIndexOf("\"); strFileName = strFileName.Substring(index + 1); strUniqueName = System.Guid.NewGuid().ToString() + "_" + strFileName; fileInp.PostedFile.SaveAs(strRootUpload + "\" + strUniqueName); lblMessage.Text = "Файлуспешнозагруженсименем " + strUniqueName + "<p>"; } } catch (Exception ex) { lblMessage.Text = ex.Message + "<p>"; } } } </script> <HTML> <HEAD> <Title>Unique Upload</Title> </HEAD> <BODY> <form enctype="multipart/form-data" runat="server"> <asp:Label id="lblMessage" runat="server" /> Файл:<br> <input id="fileInp" type="file" runat="server"><br> <asp:button text="Загрузить" OnClick="Upload_Click" runat="server" /> </form> </BODY> </HTML> |
Файл upload_vb.aspx (написанна VB.NET):
<%@ Page Language="VB" %> <script language="VB" runat="server"> Sub Upload_Click(ByVal sender As Object, ByVal e As EventArgs) Dim strFileName, strRootUpload , strUniqueName As String Dim index As Integer strRootUpload = Server.MapPath("./upload") lblMessage.Text = "" If Not (fileInp.PostedFile Is Nothing) Then Try strFileName = fileInp.PostedFile.FileName If strFileName <> "" Then strFileName = strFileName.Replace("/", "\") index = strFileName.LastIndexOf("\") strFileName = strFileName.Substring(index + 1) strUniqueName = System.Guid.NewGuid().ToString() + "_" + strFileName fileInp.PostedFile.SaveAs(strRootUpload & "\" & strUniqueName) lblMessage.Text = "Файлуспешнозагруженсименем " & strUniqueName & "<p>" End if Catch ex As Exception lblMessage.Text = ex.Message & "<p>" End Try End If End Sub </script> <HTML> <HEAD> <Title>Unique Upload</Title> </HEAD> <BODY> <form enctype="multipart/form-data" runat="server"> <asp:Label id="lblMessage" runat="server" /> Файл:<br> <input id="fileInp" type="file" runat="server"><br> <asp:button text="Загрузить" OnClick="Upload_Click" runat="server" /> </form> </BODY> </HTML> |