大家好,我在访问来自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,所以请帮助我,我是个初学者,有需要。