使用 ashx filehandler 上传文件并且 ajax 总是 return 错误

uploading file using ashx filehandler and ajax always return error

我正在使用来自 blueimp (https://blueimp.github.io/jQuery-File-Upload/) 的 jquery-文件上传。

我有 FileHandler.ashx 用于文件上传。

我无法return 更正来自文件处理程序的响应。在 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) {

        },
    });
});

结果总是 "fail" 而不是 "success"。错误是 SyntaxError: Unexpected token C。 这在某种程度上与 Response I return 有关,它的格式不正确,但它应该是什么格式?

尝试这样的事情

  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));
    }