我很難相信沒有辦法獲取正在上傳到MVC3服務器的文件的完整路徑(我讀過這是出於安全目的) 。在MVC 3中獲取上傳文件的文件路徑
有沒有解決辦法?我正在編寫一個小應用程序,用戶將在其中上傳文件,在屏幕上對其進行編輯,然後將其保存回原始位置。有沒有人有這樣做的好方法?我必須使用HttpPostedFileBase
以外的東西嗎?
我很難相信沒有辦法獲取正在上傳到MVC3服務器的文件的完整路徑(我讀過這是出於安全目的) 。在MVC 3中獲取上傳文件的文件路徑
有沒有解決辦法?我正在編寫一個小應用程序,用戶將在其中上傳文件,在屏幕上對其進行編輯,然後將其保存回原始位置。有沒有人有這樣做的好方法?我必須使用HttpPostedFileBase
以外的東西嗎?
不可能。 Web服務器只能知道用戶的Web瀏覽器願意告訴它的文件,並且除了文件內容外,任何當前瀏覽器只會提供原始文件名。客戶端PC上的文件路徑永遠不會發送到服務器。作爲安全防範措施,似乎也不可能通過客戶端Javascript獲取此信息。
此外,網絡服務器將無法控制,其中在用戶的PC上將(保存)(重新)下載的文件,因此具有該路徑信息無論如何都沒有什麼用處。
獲取文件名和路徑,你可以這樣做::
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);
}
希望這將幫助你..
不可能的,沒有辦法與客戶端文件進行播放。首先,您需要在服務器上上傳文件,並從那裏對其執行操作,然後再保存在客戶端計算機上。
@using (Html.BeginForm("EditImage", "Home", FormMethod.Post, new { enctype = "multipart/form- data" }))
{
}
和控制器,你可以有你的操作方法是這樣的:
[HttpPost]
public ActionResult EditImage(AddNewProductModel model, HttpPostedFileBase file)
{
}
希望這個解決方案將幫助你。
如在用戶PC上的原始位置?是啊......你不會那麼做。而且,將其下載回原始位置將會非常棘手,因爲大多數瀏覽器不會再詢問保存文件的位置。 除非您的意思是文件最終保存到服務器上的「完整路徑」 – KingCronus 2013-04-30 14:11:45