使用jQuery Ajax将文件发送到C#中的Web服务(asmx)

我正在通过以下方法使用Web服务:

        $.ajax({

type: 'POST',

url: 'page.asmx/method',

contentType: 'application/json; charset=utf-8',

dataType: 'json',

data: '{}'

});

发送json字符串,它可以工作,但是如果我尝试使用FormData追加输入的内容并将其传递给数据值,我将得到500响应。我该怎么办?

回答:

您需要序列化数据…。

  var data = new FormData();

var files = $("#YOURUPLOADCTRLID").get(0).files;

// Add the uploaded image content to the form data collection

if (files.length > 0) {

data.append("UploadedFile", files[0]);

}

// Make Ajax request with the contentType = false, and procesDate = false

var ajaxRequest = $.ajax({

type: "POST",

url: "/api/fileupload/uploadfile",

contentType: false,

processData: false,

data: data

});

在控制器内部,您可以拥有类似

if (HttpContext.Current.Request.Files.AllKeys.Any())

{

// Get the uploaded image from the Files collection

var httpPostedFile = HttpContext.Current.Request.Files["UploadedFile"];

if (httpPostedFile != null)

{

// Validate the uploaded image(optional)

// Get the complete file path

var fileSavePath = Path.Combine(HttpContext.Current.Server.MapPath("~/UploadedFiles"), httpPostedFile.FileName);

// Save the uploaded file to "UploadedFiles" folder

httpPostedFile.SaveAs(fileSavePath);

}

}

希望能帮助到你…

以上是 使用jQuery Ajax将文件发送到C#中的Web服务(asmx) 的全部内容, 来源链接: utcz.com/qa/398944.html

回到顶部