activex.net.ru

ActiveX .NET SharePoint Утилиты Скрипты Статьи ... Форум

Статьи

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>



Данный ASP.NET-скрипт можно взять здесь: aspnetuploader.zip



Copyright © 2000-2017 Христофоров Юрий Rambler's Top100

   Rambler's Top100