2013-04-30 3 views
1

Мне нелегко полагать, что нет способа получить полный путь к файлу, загружаемому на сервер в MVC3 (я прочитал, что это для целей безопасности) ,Получение пути к файлу для загружаемого файла в MVC 3

Есть ли работа вокруг? Я пишу небольшое приложение, в котором пользователи будут загружать файл, редактировать его на экране и сохранять его обратно в исходное местоположение. У кого-нибудь есть хороший способ сделать это? Должен ли я использовать что-то другое, кроме HttpPostedFileBase?

+3

Как в исходном месте на ПК пользователя? Да ... ты не собираешься очень далеко от этого. Кроме того, загрузка его обратно в исходное местоположение будет сложной, поскольку большинство браузеров не спрашивают, где сохранить файл. Если вы не имеете в виду «полный путь», который файл будет сохранен на сервере – KingCronus

ответ

5

Невозможно. Веб-сервер может знать только об этом файле, так как веб-браузер пользователя готов рассказать об этом, и любой текущий браузер предоставит только исходное имя файла в дополнение к содержимому файла. Путь файла на клиентском ПК никогда не отправляется на сервер. Также представляется невозможным получить эту информацию с Javascript на стороне клиента в качестве меры предосторожности.

Кроме того, веб-сервер не будет иметь контроль над , где на ПК пользователя будет загружен загруженный файл (re), поэтому, если эта информация о пути будет практически бесполезна.

0

Чтобы получить имя файла и путь, который вы можете сделать это ::

foreach (string filesData in Request.Files) 
    { 
     var fileNm = Request.Files[filesData].FileName; 
     HttpPostedFileBase hpf = Request.Files[filesData] as HttpPostedFileBase; 
     string filePath = Path.Combine(HttpContext.Server.MapPath("~//Your Folder Path//")); 
     hpf.SaveAs(filePath + fileNm); 
} 

Надежда Это поможет вам ..

0

Не возможно, Там нет никакого способа, чтобы играть с файлом на стороне клиента. Сначала вам нужно загрузить файл на сервер, выполнить его действие и снова сохранить на клиентской машине.

@using (Html.BeginForm("EditImage", "Home", FormMethod.Post, new { enctype = "multipart/form- data" })) 
    { 

    } 

и в контроллере вы можете иметь свой метод действия что-то вроде этого:

[HttpPost] 
    public ActionResult EditImage(AddNewProductModel model, HttpPostedFileBase file) 
    { 

    } 

Надеется, что это решение поможет вам.

Смежные вопросы