Как сгенерировать имя загружаемого файла?

Я создаю специальный файловый менеджер asp.net. вся информация о файлах сохраняется в таблице SQL Server. мой стол здесь

Table tFile(
FileID uniqueidentifier,
FileName nvarchar(50),
Extension nvarchar(50))

Процесс загрузки: сначала я вставляю строку таблицы, а затем загружаю файл на сервер. Затем файл переименовывается в FileID (значение GUID). Например: 4a6327c4-0596-4949-a5f2-a639e934d534.JPG

Вставленная строка таблицы выглядит так

4a6327c4-0596-4949-a5f2-a639e934d534 | image1 | JPG

И файл на сервере вот так

www.domain.com/aa/Files/4a6327c4-0596-4949-a5f2-a639e934d534.JPG

Моя проблема в том, что когда я загружаю текущий файл, был загружен файл с именем 4a6327c4-0596-4949-a5f2-a639e934d534.JPG. мне нужно image1.JPG

Когда любой пользователь загружает текущий файл, как сгенерировать текущее имя файла в обычное имя файла, например «image1.jpg»


person Community    schedule 28.09.2009    source источник


Ответы (1)


Создайте страницу download.aspx, которая принимает GUID изображения в качестве параметра строки запроса. Затем вы можете найти это значение в базе данных, чтобы получить путь к файлу и отправить его в браузер следующим образом:

Response.AddHeader("Content-Disposition", "attachment;filename=image1.jpg");
Response.ContentType = "image/jpeg";
Response.WriteFile(pathToFileOnYourServer);

Вы можете динамически создавать часть filename=image1.jpg, чтобы называть изображение как угодно.

person Community    schedule 28.09.2009
comment
Одно небольшое предостережение: если имя файла когда-либо содержит пробелы, оно должно быть заключено в двойные кавычки, иначе Firefox (версия 3.6 на момент написания) не сможет его правильно проанализировать — attachment;filename="This is my Image1.jpg" (не забудьте перейти к \ в строках C#). Не уверен, что URL-кодирование является еще одним вариантом. - person Michael Stum; 23.02.2011