ASP.net Razor从上传返回JSON中的图像URL

时间:2014-03-14 12:09:09

标签: c# asp.net asp.net-mvc json razor

下面我从我的图片上传代码返回有关图像的JSON信息。在name参数的赋值附近,我试图返回图像的URL,尽管它不起作用。目前,下面的代码不起作用,因为返回时没有任何内容返回给浏览器。代码工作正常,尽管要添加到末尾附近的Name属性的行。

如何返回图片的网址,以便在返回时向用户显示图片网址?

[HttpPost]
public ContentResult UploadFiles()
{
    var r = new List<UploadFilesResult>();

    foreach (string file in Request.Files)
    {
        HttpPostedFileBase hpf = Request.Files[file] as HttpPostedFileBase;
        if (hpf.ContentLength == 0)
            continue;

        string savedFileName = Url.Content(Path.Combine(Server.MapPath("~/Images"), Path.GetFileName(hpf.FileName)));
        hpf.SaveAs(GetNewPathForDupes(savedFileName));

        r.Add(new UploadFilesResult()
        {
            Name = Path.Combine(Server.MapPath("~/Images"), Path.GetFileName(hpf.FileName)),
            Length = hpf.ContentLength,
            Type = hpf.ContentType
        });
    }

    return Content("{\"name\":\"" + r[0].Name + "\",\"type\":\"" + r[0].Type + "\",\"size\":\"" + string.Format("{0} bytes", r[0].Length) + "\"}", "application/json");
}

修改 我的Javascript处理完成参数中的表单我试图读取JSON但是无法使用新的Jsonresult:

$(document).ready(function () {
            $('#fileupload').fileupload({
                dataType: 'json',
                url: "UploadFiles",
                autoUpload: true,
                done: function (e, data) {
                    var json = JSON.parse(data);
                    $('.file_name').html(json.name);
                    $('.file_type').html(json.type);
                    $('.file_size').html(json.size);
                }
            }).on('fileuploadprogressall', function (e, data) {
                var progress = parseInt(data.loaded / data.total * 100, 10);
                $('.progress .progress-bar').css('width', progress + '%');
            });
        });

1 个答案:

答案 0 :(得分:1)

所以而不是

return this.Content("{\"name\":\"" + r[0].Name + ...

你可以这样做:

return this.Json(r[0]);

在jQuery中阅读JSON时,您需要执行

var jsonString = // from the response

var json = $.parseJSON(jsonString);

var name = json.someElement;