2016-03-03 102 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