使用ashx文件处理程序和ajax上传文件总是返回错误



我使用jquery-file-upload from blueimp (https://blueimp.github.io/jQuery-File-Upload/)

我有FileHandler。

无法从文件处理程序返回正确的响应。在javascript端,它总是接收错误。请指引我。

//文件处理程序(FileHandler.ashx)

public void ProcessRequest(HttpContext context)
    {
        string fname = String.Empty;
        if (context.Request.Files.Count > 0)
        {
            HttpFileCollection files = context.Request.Files;
            for (int i = 0; i < files.Count; i++)
            {
                HttpPostedFile file = files[i];                    
                fname = context.Server.MapPath("~/UserImageUploads/" + file.FileName);
                file.SaveAs(fname);
            }
        }
        context.Response.ContentType = "text/plain";
        context.Response.Write(fname);
        context.Response.StatusCode = 200;
    }

//javascript部分:

$(function () {
    'use strict';
    // Change this to the location of your server-side upload handler:
    var url = 'FileHandler.ashx';
    $('#fileupload').fileupload({
        url: url,
        dataType: 'json',
        done: function (e, data) {
        },
        fail: function (e, data) {
        },
    });
});

结果总是"失败"而不是"成功"。错误是SyntaxError: Unexpected token C。这在某种程度上与我返回的响应有关,它的格式不正确,但它应该是什么格式?

试试这样

  public class ResponseMsg
    {
        public string status;
        public string name;
    }

public void ProcessRequest(HttpContext context)
    {
        string fname = String.Empty;
        if (context.Request.Files.Count > 0)
        {
            HttpFileCollection files = context.Request.Files;
            for (int i = 0; i < files.Count; i++)
            {
                HttpPostedFile file = files[i];                    
                fname = context.Server.MapPath("~/UserImageUploads/" + file.FileName);
                file.SaveAs(fname);
            }
        }
        context.Response.ContentType = "text/plain";
       // context.Response.Write(fname);
      //  context.Response.StatusCode = 200;
        ResponseMsg r = new ResponseMsg
        {
            status = "success",
            name =fname
        };
       context.Response.Write(JsonConvert.SerializeObject(r));
    }

最新更新