我已經閱讀了幾個問題,解釋瞭如何在asp.net mvc中處理文件上傳。我正在嘗試提交文件以及描述它的表單字段。這可能是問題。我會去寫代碼:在提交後在asp.net mvc上傳文件代碼中獲取'通過服務器重置連接'錯誤
查看代碼:
<% using (Html.BeginForm("CreateFile", "Video", FormMethod.Post, new { enctype = "multipart/form-data" }))
{%>
<fieldset>
<legend>Fields</legend>
<p>
<label for="file">Filename:</label>
<input type="file" name="file" id="file" />
</p>
<p>
<label for="Password">Password:</label>
<%= Html.TextBox("Password")%>
<%= Html.ValidationMessage("Password", "*")%>
</p>
<p>
<label for="Description">Description:</label>
<%= Html.TextBox("Description")%>
<%= Html.ValidationMessage("Description", "*")%>
</p>
<p>
<label for="DateUploaded">DateUploaded:</label>
<%= Html.TextBox("DateUploaded")%>
<%= Html.ValidationMessage("DateUploaded", "*")%>
</p>
<p>
<label for="DateRecorded">DateRecorded:</label>
<%= Html.TextBox("DateRecorded")%>
<%= Html.ValidationMessage("DateRecorded", "*")%>
</p>
<p>
<input type="submit" value="Submit" />
</p>
</fieldset>
<% } %>
控制器代碼:
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult CreateFile(VideoDTO video, HttpPostedFileBase f) //[Bind(Exclude="VideoId")]
{
foreach (string file in Request.Files)
{
HttpPostedFileBase hpf = Request.Files[file] as HttpPostedFileBase;
if (hpf.ContentLength == 0)
continue;
string savedFileName = Server.MapPath("Videos") + Path.GetFileName(hpf.FileName);
hpf.SaveAs(savedFileName);
video.FileName = hpf.FileName;
}
repository.CreateVideo(video);
return RedirectToAction("Index");
}
我見過幾個例子,不過經過一個都沒有來了,是試圖提交文件和其他表單數據。其他一些需要注意的事情是其他的例子似乎沒有在action方法上放置一個HttpVerb屬性,並且有一個空的參數字符串。我期望接受的文件將是各種類型的視頻文件,但它們可以在100-300 MB的範圍內。我嘗試使用(本地)的文件相對較小(50左右)。
我知道這已被問到,但我覺得我的問題在這裏是不同的。當我提交的頁面我看到:
連接被重置
到服務器連接被重置 而網頁被加載。
控制器代碼是否被執行? – ZippyV 2010-03-06 22:42:26
現在你提到它,它沒有。我有幾個突破點,但都沒有達到。如果我刪除視圖的輸入類型=文件部分,代碼運行良好,控制器部分已到達。 – jason 2010-03-07 02:01:03
順便說一句,它是「ASP.NET」,一個字。 – 2010-03-07 03:45:01