从jQuery文件上传插件的控制器操作返回什么?

时间:2012-02-09 14:47:48

标签: asp.net-mvc jquery-plugins file-upload

我正在使用Blueimp提供的jQuery File Upload 5.6版提供的演示页面。我可以让我的ASP.NET MVC项目中的演示工作到可以从页面上传文件的程度。

但是,即使文件成功上传,UI也会报告错误。我100%肯定这个错误是因为我没有从我的控制器动作中返回正确的信息。

这是我现有的行动:

    [HttpPost]
    public virtual JsonResult ImageUpload(FormCollection formdata)
    {
        var imagePath = Setting.Load(SettingKey.BlogImagesBasePath).Value;
        for(var i = 0; i < Request.Files.Count; i++)
        {
            var saveFileName = string.Format("{0}\\{1}", imagePath, Request.Files[i].FileName);
            Log.DebugFormat("Attempting to save file: {0}", saveFileName);
            Request.Files[i].SaveAs(saveFileName);
        }

        return Json(new {});
    }

我不知道结果的内容应该是什么。我尝试通过php示例进行排序,但是,并不熟悉php,我能做的最好的是可能涉及文件名,大小和类型。

是否有人链接到正在运行的MVC示例或提供将正确数据返回到插件所需的信息?

1 个答案:

答案 0 :(得分:1)

帆船柔道

我认为这个问题100%满足您的需求:

jQuery File Upload plugin asks me to download the file, what is wrong?

这里基本上是它的演示:

班级:

public class ViewDataUploadFilesResult
{
    public string Name { get; set; }
    public int Length { get; set; }
    public string Type { get; set; }
}

行动:

[HttpPost]
public JsonResult UploadFiles()
{
    var r = new List<ViewDataUploadFilesResult>();
    Core.Settings settings = new Core.Settings();
    foreach (string file in Request.Files)
    {
        HttpPostedFileBase hpf = Request.Files[file] as HttpPostedFileBase;
        if (hpf.ContentLength == 0)
            continue;
        string savedFileName = Path.Combine(settings.StorageLocation + "\\Files\\", Path.GetFileName(hpf.FileName));
        hpf.SaveAs(savedFileName);

        r.Add(new ViewDataUploadFilesResult()
        {
            Name = hpf.FileName,
            Length = hpf.ContentLength,
            Type = hpf.ContentType
        });
    }
    return Json(r);
}

所以,基本上,你只需要返回ViewDataUploadFilesResult集合的jsonresult。

希望它有所帮助。