2

我有一个 html 页面,其中包含一个带有文件上传输入的表单。

我需要将 jquery ajax 函数中的所有字段传递给包含 WebMethod 的 aspx 页面,在这种方法中,我应该将图像上传到网站文件系统,而不是作为数据库中的字节。

在 c# 中使用带有 webmethod 的 jquery ajax 是否可行

4

1 回答 1

0

如果您想将文件保存到网站文件系统,那么这是可行的。我遇到了使用 webmethod 上传文件的相同场景并看到了这个问题。我解决了这个问题,所以尽管分享我的解决方案。希望它会帮助某人。

下面是我们创建一个 FormData 对象并将我们的文件附加到它,然后通过 Jquery Ajax 将此 FormData 对象传递给 WebMethod 的代码。

var Upload = function () {
            var fileInputCtrl = $('<input id="File_OpenInputCtrl"  type="file" style="position: fixed; top: -100em" multiple/>');
fileInputCtrl.off('change').on('change', function (evt) {
    var files = evt.target.files;
    var fd = new FormData();
    for (var f = 0; f < files.length; f++) {
        var file = files[f];

        fd.append(file.name, file);

    }

    // Upload the formdata
    $.ajax({
        url: "Webservice.asmx/UploadFiles",
        type: "POST",
        data: fd,
        contentType: false,
        processData: false,
        success: function (result) {
            alert(result);
            $('#File_OpenInputCtrl').remove();
        },
        error: function (err) {
            alert(err.statusText);
            $('#File_OpenInputCtrl').remove();
        }
    });
});
    fileInputCtrl.click();          
  }

网络方法

public string UploadFiles()
{
    //this function handles the upload of gallery images and magazine file 
    var Request = HttpContext.Current.Request;
    System.Web.HttpFileCollection Files = Request.Files;
    try
    {
        for (int i = 0; i < Files.Count; i++)
        {
            System.Web.HttpPostedFile File = Files[i];
            File.SaveAs(HttpContext.Current.Server.MapPath("~/Uploads/" + File.FileName));
        }
        return "Files Saved Successfully!";
    }
    catch (Exception ex)
    {
        return ex.Message;
    }


}

希望能帮助到你。

于 2016-05-18T08:32:47.210 回答