【问题标题】:How to receive a file from c # via ajax如何通过ajax从c#接收文件
【发布时间】:2019-04-28 12:05:06
【问题描述】:

我正在尝试通过 ajax 发送一个文件,但无法保存它,有人帮助我,我已经尝试了几个序列化但没有一个有效。 acontinuauacion 我向您展示了客户端代码和服务器端,如果您能帮助我,如果我做得对,或者 [webmethod] 有另一种方法可以做到这一点,那将会很有用

$("#btnCargar").on("click", function() {
  var filese = $("#fileComparendo")[0].files[0];
  var formData = new FormData();
  formData.append("archivo", filese);

  $.ajax({
    type: "POST",
    url: "<%=ResolveUrl("addcomp.aspx/prueba")%>",
    data: formData,
    contentType: false,
    processData: false,

    success: function(data) {
      alert(data);
      console.log("CallWM" + data.d);
      alert(data.d);
    },
    error: function(XMLHttpRequest, textStatus, errorThrown) {
      var err = eval("(" + XMLHttpRequest.responseText + ")");
      alert(err.Message)
      console.log("Ajax Error!");
    }
  });

});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<div class="row">
  <div class="col-md-4">
    <input type="text" id="txtPrueba" class="form-contrav" />
    <input type="file" class="file-name" id="fileComparendo" />
    <input type="button" class="btn btn-danger" value="Cargar" id="btnCargar" />
  </div>
</div>
[WebMethod]
public static  string prueba(HttpContext archivo)
{
   // var recipient = Request["Recipient"];
    var re =  HttpContext.Current.Request.Form["archivo"];
    archivo.Response.ContentType = "text/plain";

    string dirFullPath = HttpContext.Current.Server.MapPath("~/files/");
    string[] files;
    int numFiles;
    files = System.IO.Directory.GetFiles(dirFullPath);
    numFiles = files.Length;
    numFiles = numFiles + 1;
    string str_image = "";
    foreach (string s in archivo.Request.Files)
    {
        HttpPostedFile file = archivo.Request.Files[s];
        string fileName = file.FileName;
        string fileExtension = file.ContentType;

        if (!string.IsNullOrEmpty(fileName))
        {
            fileExtension = Path.GetExtension(fileName);
            str_image = "MyPHOTO_" + numFiles.ToString() + fileExtension;
            string pathToSave_100 = HttpContext.Current.Server.MapPath("~/files/") + str_image;
            file.SaveAs(pathToSave_100);
        }
    }
    archivo.Response.Write(str_image);
    return "hola";
}

【问题讨论】:

    标签: c# asp.net ajax webmethod


    【解决方案1】:

    [WebMethod] 只能接受 application/json 的内容类型,但您可以使用 .ashx:https://stackoverflow.com/a/26273565/1429439

    添加一个名为Upload.ashx 的新通用处理程序,然后将ProcessRequest() 替换为:

    public void ProcessRequest(HttpContext archivo)
            {
                var re = HttpContext.Current.Request.Form["archivo"];
                archivo.Response.ContentType = "text/plain";
    
                string dirFullPath = HttpContext.Current.Server.MapPath("~/files/");
                string[] files;
                int numFiles;
                files = System.IO.Directory.GetFiles(dirFullPath);
                numFiles = files.Length;
                numFiles = numFiles + 1;
                string str_image = "";
                foreach (string s in archivo.Request.Files)
                {
                    HttpPostedFile file = archivo.Request.Files[s];
                    string fileName = file.FileName;
                    string fileExtension = file.ContentType;
    
                    if (!string.IsNullOrEmpty(fileName))
                    {
                        fileExtension = System.IO.Path.GetExtension(fileName);
                        str_image = "MyPHOTO_" + numFiles.ToString() + fileExtension;
                        string pathToSave_100 = HttpContext.Current.Server.MapPath("~/files/") + str_image;
                        file.SaveAs(pathToSave_100);
                    }
                }
                archivo.Response.Write(str_image);
            }
    

    更新$.ajax() 中的url 以指向Upload.ashx

    url: "<%=ResolveUrl("Upload.ashx")%>",
    

    【讨论】:

    • 你可以帮我举个例子,我是软件开发新手
    • 您好朋友,您正在尝试使用通用驱动,但在 webconfig 中尚未配置为管理员
    猜你喜欢
    • 2015-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多