#c# #asp.net
#c# #asp.net
Вопрос:
Я пытаюсь загрузить файлы с одинаковыми именами на сервер, используя GUID, но он не работает и все еще заменяет старые файлы, кто-нибудь может мне помочь, сообщив, где я совершаю ошибку?
вот y-код для загрузки:
protected void btnAddExpenditure_Click(object sender, EventArgs e)
{
if (FileUpload1.HasFile)
{
string FileName = FileUpload1.PostedFile.FileName;
if (File.Exists(FileName))
{
FileName = Guid.NewGuid() FileName;
}
//check file Extension amp; Size
int filesize = FileUpload1.PostedFile.ContentLength;
if (filesize > (20 * 1024))
{
Label1.Text = "Please upload a zip or a pdf file";
}
string fileextention = System.IO.Path.GetExtension(FileUpload1.FileName);
if (fileextention.ToLower() != ".zip" amp;amp; fileextention.ToLower() != ".pdf")
{
Label1.ForeColor = System.Drawing.Color.Green;
Label1.Text = "Please upload a zip or a pdf file";
}
else
{
string ReceiptFileName = Path.GetFileName(FileUpload1.PostedFile.FileName);
//save file to disk
FileUpload1.SaveAs(Server.MapPath("Reciepts/" ReceiptFileName));
}
Комментарии:
1. Даже если вы задаете имя файла, вы не используете его для сохранения, вы используете переменную ReceiptFileName, вот в чем проблема
Ответ №1:
string FileName = FileUpload1.PostedFile.FileName;
if (File.Exists(FileName))
{
FileName = Guid.NewGuid() FileName;
}
...
string ReceiptFileName = Path.GetFileName(FileUpload1.PostedFile.FileName);
Вот ваша проблема. Вы создаете новую строковую переменную, которая содержит имя файла ( FileName
) . Если он существует, вы изменяете FileName
его с помощью нового идентификатора GUID. Но в самом конце…
string ReceiptFileName = Path.GetFileName(FileUpload1.PostedFile.FileName);
вы все еще используете исходный файл FileUpload1.PostedFile.Имя файла. Это должно быть изменено на
string ReceiptFileName = Path.GetFileName(FileName);
РЕДАКТИРОВАТЬ: повторное чтение кода, я думаю, у вас могут возникнуть и другие проблемы. Предполагая, что FileUpload1.PostedFile .Имя файла — это полный путь (т.е. C:FolderFile.txt ), затем
FileName = Guid.NewGuid() FileName;
приведет к чему-то вроде 123-4321-GUIDC:FolderFile.txt
Я сомневаюсь, что это то, чего вы хотите. Возможно, вы захотите изменить это
FileName = FileName Guid.NewGuid();
Комментарии:
1. Нет проблем! Если это был правильный ответ, можете ли вы продолжить и пометить этот вопрос как правильный?