Skip to main content
 首页 » 编程设计

c#之将 UploadFile 内容作为 byte[] 或来自 jquery ajax 函数的对象传递并通过 webmethod 上传

2024年01月01日38tuyile006

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

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

在 C# 中使用 jquery ajax 和 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; 
    } 
 
 
} 

希望对您有所帮助。