Что вернуть из действия контроллера для плагина загрузки файлов jQuery? - PullRequest
2 голосов
/ 09 февраля 2012

Я использую демонстрационную страницу, предоставляемую jQuery File Upload версии 5.6 от Blueimp.Я могу заставить демонстрацию работать в моем проекте ASP.NET MVC до такой степени, что файл может быть загружен со страницы.

Однако, даже если файл успешно загружен, пользовательский интерфейс сообщает об ошибке.Я на 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 Ответ

1 голос
/ 09 февраля 2012

Парусный дзюдо

Я думаю, что этот вопрос отвечает вашим потребностям на 100%:

Плагин загрузки файлов jQuery запрашивает у меня файл, что не так?

Вот в основном то, что он демонстрирует:

класс:

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

так что, по сути, вам просто нужно вернуть jsonresult коллекции ViewDataUploadFilesResult.

Надеюсь, это поможет.

...