如何在来自ajax formData对象的api控制器中获取值

时间:2018-07-09 11:17:44

标签: jquery asp.net-web-api

大家好,我在访问来自Ajax请求到API控制器的数据时遇到问题。我的API控制器代码和Ajax jQuery代码无效  这是API控制器代码

 [Route("api/ImageUploadController/PostDynamicImages")]
        public Task<HttpResponseMessage> PostDynamicImages()
        {
            List<string> savedFilePath = new List<string>();
            // Check if the request contains multipart/form-data
            if (!Request.Content.IsMimeMultipartContent())
            {
                throw new HttpResponseException(HttpStatusCode.UnsupportedMediaType);
            }
            //Get the path of folder where we want to upload all files.
            string rootPath = HttpContext.Current.Server.MapPath("~/ProductsImages");

            var provider = new MultipartFileStreamProvider(rootPath);
            // Read the form data.
            //If any error(Cancelled or any fault) occurred during file read , return internal server error
            var task = Request.Content.ReadAsMultipartAsync(provider).
                ContinueWith<HttpResponseMessage>(t =>
                {
                    if (t.IsCanceled || t.IsFaulted)
                    {
                        Request.CreateErrorResponse(HttpStatusCode.InternalServerError, t.Exception);
                    }
                    foreach (MultipartFileData dataitem in provider.FileData)
                    {
                        try
                        {
                            //Replace / from file name
                            string name = dataitem.Headers.ContentDisposition.FileName.Replace("\"", "");
                            //Create New file name using GUID to prevent duplicate file name
                            string newDImgFileName = Guid.NewGuid() + Path.GetExtension(name);
                            //Move file from current location to target folder.
                            File.Move(dataitem.LocalFileName, Path.Combine(rootPath, newDImgFileName));



                            var AltAddress = db.InsertDynamicImages();





                        }

                        catch (Exception ex)
                        {
                            string message = ex.Message;
                        }
                    }

                    return Request.CreateResponse(HttpStatusCode.Created, newDImgFileName);
                });
            return task;


        }

并且我的jquery代码无效

 $(".btnDPicUpload").click(function () {

                var btnId = $(this).attr('id');
                var ImageCat = $("#txtDImgCat" + btnId).val();
                alert(btnId);
                alert(ImageCat);

                if ($('#Dmyfile' + btnId).val() == '') {
                    alert('Please select file');
                    return;
                }

                var formData = new FormData();

                var file = $('#Dmyfile' + btnId)[0];
                formData.append('file', file.files[0]);

                var ImageData = {
                    ImageCategory: ImageCat,
                    Extra1: "Null",
                    Extra2: "Null",
                    Extra3: "Null",
                    Extra4: "Null",
                    Extra5: "Null",
                    Extra6: "Null",
                }
                alert("hi");
                formData.append('ImageData', ImageData);
                alert("hell");
                $.ajax({
                    url: '/api/ImageUploadController/PostDynamicImages/',
                    type: 'POST',
                    data: formData,
                    contentType: false,
                    processData: false,
                    success: function (d) {

                        alert('file is uploaded successfully');
                         DynamicImageDetails();
                         $("#" + btnId).blur();
                    },
                    error: function () {
                        alert('Some thing went wrong');
                    }
                });


            });

现在的问题是我要从控制器中的formdata发送两个对象,第一个对象是文件,第二个对象是名为ImageData的文件的一些详细信息,但是在控制器中我需要两者,但我不知道如何访问formdata的第二个对象名为Imagedata,所以请帮助我,我是个初学者,有需要。

0 个答案:

没有答案