2013-11-14 11 views
0

我有以下的標記:無法在的FormCollection對象,以接收內部控制文件中的數據

<form id="did" enctype="multipart/form-data"> 
    <textarea name="description">Text</textarea> 
    <input name="files" id="files" type="file" accept="doc,pdf" /> 
    ... 
</form> 

而且在控制其是這樣的:

public int Edit_Submit(FormCollection oForm) 
    { 

      var attachedFiles = oForm["files"]; 
      var description= oForm["description"]; 
      .... 
    } 

我張貼,通過jQuery它看起來像這樣的形式:

var formInfo = $("#did").serialize(); 
    $.post('../../data/SubmitEdit', formInfo, function (serverResult) { 
    ... 

我正在接收其他數據,但總是nullattachedFiles

通過這種方式不可能嗎?我做錯了什麼,請幫忙。

+0

如果您在選擇文件後查看源文件是否存在存儲在文件輸入中的任何數據?它已經有一段時間了,但我相信數據存儲在文件輸入旁邊的自動生成的輸入中 –

回答

0

我不認爲您上傳的文件將在您的表單集合中。

嘗試是這樣的,也許:

<form id="did" action="../../data/SubmitEdit" enctype="multipart/form-data"> 
    <textarea name="description">Text</textarea> 
    <input name="files" id="files" type="file" accept="doc,pdf" /> 
    ... 
</form> 

[HttpPost] 
public ActionResult SubmitEdit(FormCollection oForm, HttpPostedFileBase files) { 
    ... 

確保HttpPostedFileBase名稱相同的input[type="file"]

0

$.post()方法的id本質上是一個Ajax調用,或者在更多的技術術語,使用XMLHttpRequest對象。

而通過XMLHttpRequest對象,您無法將文件流發送回服務器。雖然有一些模仿的方法。

此外,在服務器端,您應該使用HttpPostedFileBase類,以將文件流返回到服務器。