Krajee загрузочный файл-вход с бритвой Mvc

Я хочу использовать Krajee bootstrap-fileinput ( http://plugins.krajee.com/file-input) с бритвой Mvc. Пожалуйста, помогите мне с процессом загрузки изображений на сервер, и результат json будет получен из actionResult.

Я только что включил необходимые файлы js и css на страницу просмотра и добавил строку

<input id="input-702" name="kartik-input-702[]" type="file" multiple="true" class="file-loading">

и сценарий

$("#input-702").fileinput({
    uploadUrl:"@Url.Action("upload","Home")",
    uploadAsync: true,
    minFileCount: 1,
    maxFileCount: 5,
    overwriteInitial: false,
    initialPreview: "",
    initialPreviewConfig:"",
    uploadExtraData: ""
});

Эта строка форматируется и показывает эффект перетаскивания и выбора кнопки "Файл". Выбор файла и создание миниатюр работают правильно, но при загрузке есть функция (fileinput, js) "ajaxSubmit", которая используется для публикации содержимого в HomeController. ActionResult "Загрузить".


ajaxSubmit: function (fnBefore, fnSuccess, fnComplete, fnError) {
        var self = this, settings;
        self.uploadExtra();
        settings = $.extend({
            xhr: function () {
                var xhrobj = $.ajaxSettings.xhr();
                return self.initXhr(xhrobj, 98);
            },
            url: self.uploadUrl,
            type: 'POST',
            dataType: 'json',
            data: self.formdata,
            cache: false,
            processData: false,
            contentType: false,
            beforeSend: fnBefore,
            success: fnSuccess,
            complete: fnComplete,
            error: fnError
        }, self.ajaxSettings);
        self.ajaxRequests.push($.ajax(settings));
    },

Теперь я хочу сохранить на сервере все файлы, которые не были загружены с помощью ActionResult и передать значение обратно в js. как извлечь формданные и обработать.??

2 ответа

Решение

Я пытался найти решение вышеупомянутой проблемы и наконец нашел тот. Так как я могу сохранить файл на сервере на контроллере, но, к сожалению, я не смог отправить ответ json с контроллера на javascript.

Сохранение изображения с помощью действия контроллера:

[HttpPost]
    public ActionResult upload()
    {           
        foreach (string item in Request.Files)
        {
            HttpPostedFileBase file = Request.Files[item] as HttpPostedFileBase;
            string fileName = file.FileName;
            string UploadPath = "~/Images/";

            if (file.ContentLength == 0)
                continue;
            if (file.ContentLength > 0)
            {
                string path = Path.Combine(HttpContext.Request.MapPath(UploadPath), fileName);
                string extension = Path.GetExtension(file.FileName);

                file.SaveAs(path);
            }
        }

        return Json("");
}

Для реализации кнопки удаления мы должны отправить данные с сервера в асинхронном режиме как объект массива json, например.

initialPreview: [
    '<img src='/images/desert.jpg' class='file-preview-image' alt='Desert' title='Desert'>',
],


initialPreviewConfig: [
    {
        caption: 'desert.jpg', 
        width: '120px', 
        url: '/localhost/avatar/delete', 
        key: 100, 
        extra: {id: 100}
    }
]

Кто-нибудь может мне помочь создать объект массива json в контроллере и отправить его в качестве объекта ответа.???

У меня похожая проблема. Работает (с вызовами ajax), но всегда получает один файл в запросе (тогда как мне нужно получить несколько, но должно работать для вас!)

Мой код выглядит следующим образом: HTML:

<input id="input-id" type="file" data-preview-file-type="text" name="fileUpload[]" multiple class="file-loading" />

JS:

  $("#input-id").fileinput(
            {
                uploadUrl: "/Galleries/Upload",
                uploadAsync: true,
                maxFileCount: 5

            });

MVC контроллер, который я ожидал бы работать, но я не:

[HttpPost]
public JsonResult Upload(IEnumerable<HttpPostedFileBase> fileUpload)
{
  //somde logic
}

Однако когда в стороне метод я буду вызывать:

Request.Files

Мой scenerio - это пользователь:

  1. нажимает на "обзор"
  2. выбирает картинку и может видеть ее в превью
  3. нажмите "Обзор" еще раз
  4. выбирает изображение, и изображение добавляется в текущий список предварительного просмотра
  5. щелкает загрузка и я получаю все файлы в контроллере

Единственный способ понять, как это может работать - это переключение вызова ajax на плагине, который позволяет добавить список предварительного просмотра. К сожалению, я не могу передать все изображения на контроллер.

Другие вопросы по тегам