无法在提交Jqgrid上获取上传的图像数据

时间:2017-02-27 15:48:49

标签: jquery jqgrid

我在使用JQGrid上传图片时遇到了问题。我想在将实际记录提交给服务器之前将文件内容保存到会话中。我尝试使用Ajaxuploadfile库[https://github.com/davgothic/AjaxFileUpload]上传文件,但它给出了错误

  

未捕获的TypeError:无法读取未定义的属性“0”

我是Jqgrid的新手。我们将非常感谢您的帮助

以下是我的代码:

  $("#grid").jqGrid({
    url: "/PatchItem/Index2",
    datatype: 'local',
    data: mydata,
    colNames: ['Name', 'Patch GroupName', 'Description', 'ImageId', 'SortOrder'],
    colModel: [
        { key: false, name: 'Name', index: 'Name', editable: true },
        {
            key: false, name: 'PatchGroupName', index: 'PatchGroupName', editable: true, edittype: 'select', editoptions: {
                dataUrl: "/PatchItem/GetPatchGroupList",
                buildSelect: function (data) {

                    var response = $.parseJSON(data);

                    var s = '<select id="patchGroup" name="patchGroup">';

                    if (response && response.length) {
                        for (var i = 0, l = response.length; i < l; i++) {
                            if (name == response[i])
                                s += '<option value="' + response[i] + '" selected=selected>' + response[i] + '</option>';
                            else
                                s += '<option value="' + response[i] + '">' + response[i] + '</option>';
                        }
                    }


                    return s + "</select>";
                }
            }
        },
        { key: false, name: 'Description', index: 'Description', editable: true },
        {
            key: false, name: 'ImageId', index: 'ImageId', edittype: 'file', editoptions: {
                enctype: "multipart/form-data"
            }, editable: true, formatter: function (name) {
                return "<img src='/Image/GetImage/" + name + "' alt='my image' style='width:40px';height:40px' />";
            }
        },
        { key: false, name: 'SortOrder', index: 'SortOrder', editable: true }
    ],
    pager: jQuery('#pager'),
    mtype: "POST",
    loadonce: true,
    gridview: true,
    autoencode: true,
    rowNum: 10,
    rowList: [10, 20, 30, 40],
    height: '100%',
    viewrecords: true,
    caption: 'Patch Item List',
    emptyrecords: 'No records to display',
    jsonReader: {
        root: "rows",
        page: "page",
        total: "total",
        records: "response",
        repeatitems: false,
        Id: "0"
    },
    autowidth: true,
    multiselect: false
}).navGrid('#pager', { edit: false, add: true, del: false, search: false, refresh: true },
   {
       // edit options
       zIndex: 100,
       url: '/PatchItem/Edit',
       closeOnEscape: true,
       closeAfterEdit: true,
       recreateForm: true,
       afterComplete: function (response) {
           if (response.responseText) {
               alert(response.responseText);
           }
       }
   },

    {
        // add options
        zIndex: 100,
        url: "/PatchItem/New_Save",
        mtype: "POST",
        closeOnEscape: true,
        closeAfterAdd: true,
        beforeSubmit: function (response, postdata) {
          ///  UploadImage1();
           // UploadImage(response, postdata);
            $('#ImageId').AjaxFileUpload({
                url: 'UploadImage/PatchImage',
                secureuri: false,
                fileElementId: 'ImageId',
                type: 'POST',
                dataType: 'json',
                async: false,
                data: { imageType: 'PatchImage' },
                success: function (data, status) {
                    alert("Upload Complete.");
                },
                error:function(response)
            {
                console.log(response)
            }
            });
        },
        afterComplete: function (response) {
            if (response.responseText) {
                alert(response.responseText);
            }
        }
    }
    ,
    {
        // delete options
        zIndex: 100,
        url: "/PatchItem/delete",
        closeOnEscape: true,
        closeAfterDelete: true,
        recreateForm: true,
        msg: "Are you sure you want to delete this task?",
        afterComplete: function (response) {
            if (response.responseText) {
                alert(response.responseText);
            }
        }
    }
    );

});

这是我的服务器端代码:

 [HttpPost]
    //[Route("PatchItem/UploadImage/{imageType}")]
    public JsonResult UploadImage(string imageType)
    {
        if (User == null)
        {
            return null;
        }
        try
        {
            foreach (string file in Request.Files)
            {
                var fileContent = Request.Files[file];
                if (fileContent != null && fileContent.ContentLength > 0)
                {
                    // get a stream
                    using (MemoryStream inputMs = new MemoryStream())
                    {
                        fileContent.InputStream.CopyTo(inputMs);
                        inputMs.Seek(0, SeekOrigin.Begin);
                        try
                        {
                            using (System.Drawing.Image image = System.Drawing.Image.FromStream(inputMs))
                            {
                                KrakenClient client =
                                    new KrakenClient(ConfigurationManager.AppSettings["Kraken.Api.Key"],
                                        ConfigurationManager.AppSettings["Kraken.Api.Secret"]);

                                string warning = this.CheckImageFormat(image, imageType);
                                inputMs.Seek(0, SeekOrigin.Begin);
                                var img = Business.Image.Resize(inputMs.ToArray(), imageDimensions[imageType].Width, imageDimensions[imageType].Height);
                                try
                                {
                                    img = client.OptimizeImage(img, true).OptimizedImage;
                                }
                                catch
                                {
                                    // do nothing by design
                                }

                                if (!(Session["Img_" + imageType] is Dictionary<string, ImageInformationModel>))
                                {
                                    Session["Img_" + imageType] = new Dictionary<string, ImageInformationModel>();
                                }

                                Guid newId = Guid.NewGuid();
                                FileInfo fInfo = new FileInfo(fileContent.FileName);
                                ((Dictionary<string, ImageInformationModel>)Session["Img_" + imageType]).Add(newId.ToString("N"), new ImageInformationModel
                                {
                                    Content = img,
                                    Name = fInfo.Name
                                });


                                return Json(
                                new
                                {
                                    Success = true,
                                    Message = warning,
                                    UploadedId = newId.ToString("N")
                                }, "text/plain");
                            }
                        }
                        catch (Exception)
                        {
                            return Json(
                            new
                            {
                                Success = false,
                                Message = "Falsches/unbekanntes Bildformat!"
                            }, "text/plain");
                        }
                    }
                }
            }
        }
        catch (Exception)
        {
            return null;
        }

        return null;
    }

0 个答案:

没有答案