2012-10-18 40 views
0

我郵寄到以下控制器動作:不能同時上傳多個文件中的MVC

<EmployeeAuthorize()> 
<HttpPost()> 
Function SendNewMessage(ByVal files1 As HttpPostedFileBase, ByVal files2 As HttpPostedFileBase) As JsonResult 

    Debug.Print("files1=" + files1.ToString) 
    Debug.Print("files2=" + files2.ToString) 



    Dim result = New Dictionary(Of String, String) 




    Dim fileName = Path.GetFileName(files1.FileName) 
    Dim filePath = Path.Combine(Server.MapPath("~/App_Data/uploads"), fileName) 

    files1.SaveAs(filePath) 


    Dim fileName2 = Path.GetFileName(files2.FileName) 
    Dim filePath2 = Path.Combine(Server.MapPath("~/App_Data/uploads"), fileName) 

    files2.SaveAs(filePath) 




    Return Json(result) 

End Function 

我上Debug.Print("files2=" + files2.ToString)行一個錯誤,指出,「NullReferenceException Object reference not set to an instance of an object.

這是我正在使用的視圖:

 @Using Html.BeginForm("SendNewMessage", "Message", FormMethod.Post, New With {.id = "sendForm", .enctype="multipart/form-data"}) 

      @<div class="sendBox"> 


       <h2 style="margin: 10px 0 0 0;">Attachments:</h2> 
       <label>Attachment 1: &nbsp;<input type="file" name="files1" id="file1" class="files"/></label> 
       <label>Attachment 2: &nbsp;<input type="file" name="files2" id="file2" class="files"/></label> 
       <label>Attachment 3: &nbsp;<input type="file" name="files3" id="file3" class="files"/></label> 

       <input type="submit" value="Send" /> 

     </div> 

     End Using 

第一個文件沒問題(files1)。爲什麼我不能上傳多個文件?

+0

你把一個破發點,並期待以確保'.Files'有一個以上的? – Eonasdan

+0

我還沒有嘗試過。我不熟悉使用斷點的做法(雖然我知道它很基本)... – user1477388

+2

將光標放在'For Each i In Request.Files'(或現在是w/e)並按下'F9 '然後按下'F5',這會使你的程序進入調試模式。嘗試上傳您的文件。一旦你的代碼達到這一點,它將停止。然後你可以檢查'.Files' – Eonasdan

回答

1

在您的代碼中,您使用兩次相同的fileName變量。對於正在使用兩次的filePath變量也是如此。所以更換:

Dim fileName2 = Path.GetFileName(files2.FileName) 
Dim filePath2 = Path.Combine(Server.MapPath("~/App_Data/uploads"), fileName) 
files2.SaveAs(filePath) 

有:

Dim fileName2 = Path.GetFileName(files2.FileName) 
Dim filePath2 = Path.Combine(Server.MapPath("~/App_Data/uploads"), fileName2) 
files2.SaveAs(filePath2) 
+0

偉大的工作,我沒有發現。現在我必須回頭去弄清楚還有什麼可能會破壞它,因爲我將其他參數添加到方法頭中。 – user1477388

+0

主要問題是這樣的:在我的下拉列表中注意我是如何調用'@ Html.DropDownList(「Resources」,'但是在我的函數頭中,我調用了'Function SendNewMessage(ByVal Resource As Integer,'。我需要添加'Function SendNewMessage(ByVal Resources As Integer,'它可能會奏效,可能! – user1477388