2016-03-03 89 views
1

我需要上傳文件到服務器併發送一個GUID值,兩者都需要完成一項操作。JQuery Ajax從客戶端上傳文件和其他值

是否可以同時發送一個$.ajax聲明?

這裏的上傳操作方法的一個片段我使用

[HttpPost] 
public ActionResult Upload() 
{ 
    HttpPostedFileBase file = Request.Files[0]; 
} 

,這裏是我使用的文件發送到服務器

function upload() { 
    var formData = new FormData(); 
    var totalFiles = document.getElementById("FileUpload").files.length; 

    for (var i = 0; i < totalFiles; i++) { 
    var file = document.getElementById("FileUpload").files[i]; 

    formData.append("FileUpload", file); 
    } 

    $.ajax({ 
    type: 'post', 
    url: '/myController/Upload', 
    data: formData, 
    dataType: 'json', 
    contentType: false, 
    processData: false, 
    success: function (response) { 
     alert('succes!!'); 
    }, 
    error: function (error) { 
     alert("errror"); 
    } 
    }); 
} 

這Javascript代碼的片段代碼運行良好。該文件按預期上傳,但現在我需要發送一個GUID到同一個控制器(上傳),所以我不知道我是否可以在同一個$.ajax聲明中發送該文件的GUID?

+1

'formData.append( 'myGuid', '[GUID值這裏..]');' –

+1

在此http看一看://計算器。 com/questions/34603739/jquery-ajax-form-submit-that-c​​ontains-files/34604232#34604232 – Shyju

+0

是的,你可以用formData中的文件發送字符串,如上面的Rory所示,你所需要做的就是附加數據 – adeneo

回答

1
function upload() { 
    var formData = new FormData(); 
    var totalFiles = document.getElementById("FileUpload").files.length; 

    for (var i = 0; i < totalFiles; i++) { 
    var file = document.getElementById("FileUpload").files[i]; 

    formData.append("FileUpload", file); 
formData.append("guid", theGuid); 
    } 

    $.ajax({ 
    type: 'post', 
    url: '/myController/Upload', 
    data: formData, 
    dataType: 'json', 
    contentType: false, 
    processData: false, 
    success: function (response) { 
     alert('succes!!'); 
    }, 
    error: function (error) { 
     alert("errror"); 
    } 
    }); 
} 

在服務器端:

Request.Form["guid"]; 
Request.Files["FileUpload"]; 
+0

如何管理上傳控制器中發送的數據?當我檢查控制器中的Request.Files的值時,只有一個值「FileUpload」,我怎樣才能訪問formData中的「guid」值? – vcRobe

+0

@vcRobe我編輯了我的代碼,看看它 –

+0

感謝您的快速回答。有用! – vcRobe