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>
Оставить комментарий
Комментарии
1.
28 июня 2005, 22:46:26
###########################
Warning: passthru(): Cannot execute a blank command in /home/nethack/nethack.com.ru/html/atack/karapuz.php on line 29
###########################
Warning: passthru(): Cannot execute a blank command in /home/nethack/nethack.com.ru/html/atack/karapuz.php on line 29
###########################
2.
+1 / -0
8 июня 2004, 16:58:17
I cann't upload file on server. Where I can to download example?