我正在使用byte[]
來獲取要上傳到我的ASP.NET網站的文件的序列化版本。我使用HttpPostedFileBase
您的視圖模型來保存上傳的文件在Web應用程序中存儲文件上傳的位置
public class MyViewModel
{
[Required]
public HttpPostedFileBase File { get; set; }
}
我HomeController
是
public class HomeController: Controller
{
public ActionResult Index()
{
var model = new MyViewModel();
return View(model);
}
[HttpPost]
public ActionResult Index(MyViewModel model)
{
if (!ModelState.IsValid)
return View(model);
byte[] uploadedFile = new byte[model.File.InputStream.Length];
model.File.InputStream.Read(uploadedFile, 0, uploadedFile.Length);
// Where do I write the file to?
return Content("Upload complete");
}
}
在我看來
最後我有
@model MyViewModel
@using (Html.BeginForm(null, null, FormMethod.Post, new { enctype = "multipart/form-data" }))
{
<div>
@Html.LabelFor(x => x.File)
@Html.TextBoxFor(x => x.File, new { type = "file" })
@Html.ValidationMessageFor(x => x.File)
</div>
<button type="submit">Upload</button>
}
上傳內容纔會被執行由我(管理員)提供,並且只有兩個應用程序安裝程序(.exe文件,一個8MB和另一個18MB)。我的問題是如何/在哪裏可以存儲上傳的文件,以便用戶可以下載這些文件?
謝謝你的時間。
從技術上講,在大多數情況下,將上傳的文件存儲在webroot外部並通過Handler訪問它們總是好得多。這種方法的好處不僅在於安全性,而且在下載文件(日誌記錄,...)時可以執行其他任務,甚至可以在更改文件路徑時擁有永久鏈接。 – 2014-11-06 14:11:42
謝謝你的時間。我把它存儲在數據庫中的原始數據是不是要走的路?另外,使用[this](https://www.google.co.uk/url?sa=i&rct=j&q=&esrc=s&source=images&cd=&cad=rja&uact=8&ved=0CAcQjRw&url=http%3A%2F%2Fvikung-fu .deviantart.com%2Fart%2FBartman-The-Dark-Knight-91611234&ei = lI9bVL6vIIajgwTi7IK4AQ&bvm = bv.78677474,d.ZGU&psig = AFQjCNHFlPYcpR5ehl8nPccVP82C_CvmEw&ust = 1415373064457448)因爲您的Avitar會很棒! – MoonKnight 2014-11-06 15:12:27
把它存儲在數據庫中也是一種可能性,確實可以提供相同的優點,因爲您還需要通過處理程序訪問它。數據庫存儲通常比文件存儲更昂貴,所以你可能想要保持存儲數據的大小非常低。也就是說,這兩種解決方案的巨大優勢是,您可以決定在事後更換任何其他解決方案,更新您的處理程序將使更改對用戶透明... – 2014-11-07 08:05:54