Можно ли получить полное имя загруженного файла в asp.net mvc?

ОБНОВЛЕНИЕ Данные содержат только имя файла, но не путь к файлу! Подробности смотрите на прикрепленном изображении.

screenshot

2
Alexandre 2 Ноя 2011 в 11:29
Вы имеете в виду полный путь к файлу? Или только имя файла?
 – 
Scott Rippey
2 Ноя 2011 в 11:32
Риппи, полное имя файла.
 – 
Alexandre
2 Ноя 2011 в 12:23
Ох, хорошо. Просто чтобы уточнить, что вы считаете «полным именем файла»? «C:\Path\To\My File.txt» или «My File.txt»?
 – 
Scott Rippey
2 Ноя 2011 в 12:30
2
Вы делаете большую концептуальную ошибку. См. также: stackoverflow.com/questions/81180/…
 – 
BalusC
5 Ноя 2011 в 23:01

1 ответ

Это зависит от браузера.
Большинство браузеров (FF, Chrome, Safari) не отправляют эту информацию, прежде всего из соображений безопасности. Однако похоже, что некоторые версии IE отправляют полный путь клиента.
Это значение будет храниться в свойстве FileName объекта HttpPostedFile.

Документация для FileName должна помочь. Там сказано:

FileName: имя файла клиента, включая путь к каталогу.

В следующем коде postedFile.FileName зависит от браузера. Поэтому важно всегда извлекать только имя файла, и вам также может повезти, и вы также получите clientPath.

public ActionResult UploadFile(HttpPostedFile postedFile) {
    var clientPath = IO.Path.GetDirectoryName(postedFile.FileName);
    var filename = IO.Path.GetFileName(postedFile.FileName);
    ... Save the file, etc ...
}
9
Scott Rippey 2 Ноя 2011 в 12:00
Взгляните, пожалуйста, на мое приложение.
 – 
Alexandre
2 Ноя 2011 в 23:41