上传带有文件附件的 FormData
uploading FormData with file attachment
我正在使用 jquery 上传带有文件附件的表单数据。
服务器是 jquery restify。我遇到的问题是我将图像文件(称为 cocktail_image_file_input
)作为字符串获取:
这意味着该值为以下字符串:
[object FileList]
我应该在 req.files 中看到它,但我在 req.context.cocktail_image_file_input
中看到它作为常规字符串数据。
我正在尝试使用以下代码发送数据:
$('#finish_cocktail_button').click(
function () {
var data = new FormData();
var cocktailImageFile = $('#cocktail_image_file_input')[0].files;
if (cocktailImageFile.length == 1) {
data.append('cocktail_image_file_input',cocktailImageFile);
}
var cocktailName = $('#cocktail_name_input').val().trim();
var cocktailSourceType = $('#cocktail_source_type_select').val();
var cocktailSourceName = $('#cocktail_source_name_input').val();
var cocktailSourceDesc = $('#cocktail_source_desc_input').val();
if (cocktailName.length < 3) {
alert('please enter a valid cocktail name');
} else {
var cocktailSteps = [];
$('#cocktail_steps_ul li').each(
function () {
var step = [];
$('span', this).each(function(){step.push($(this).text())});
fullStep = step.join(commandsSplitSign);
cocktailSteps.push(fullStep);
}
);
if (cocktailSteps.length < 2) {
alert('really? less then 2 steps cocktail ?');
} else {
data.append('cocktail_name',cocktailName);
data.append('cocktail_steps',JSON.stringify(cocktailSteps));
data.append('cocktail_source_type',cocktailSourceType);
data.append('cocktail_source_name',cocktailSourceName);
data.append('cocktail_source_desc',cocktailSourceDesc);
$.ajax({
url: 'http://api.myalcoholist.com:8888/cocktail/add_cocktail',
crossDomain: true
, type: 'POST',
enctype: 'multipart/form-data',
processData: false,
contentType: false
, data:data
}).done(function (data) {
alert(data);
});
}
}
}
);
我错过了什么?
你缺少[0]
:data.append('cocktail_image_file_input',cocktailImageFile[0])
这将 select 只有 file
对象,否则您尝试附加 FormData
无法识别的 FileList
对象。
我正在使用 jquery 上传带有文件附件的表单数据。
服务器是 jquery restify。我遇到的问题是我将图像文件(称为 cocktail_image_file_input
)作为字符串获取:
这意味着该值为以下字符串:
[object FileList]
我应该在 req.files 中看到它,但我在 req.context.cocktail_image_file_input
中看到它作为常规字符串数据。
我正在尝试使用以下代码发送数据:
$('#finish_cocktail_button').click(
function () {
var data = new FormData();
var cocktailImageFile = $('#cocktail_image_file_input')[0].files;
if (cocktailImageFile.length == 1) {
data.append('cocktail_image_file_input',cocktailImageFile);
}
var cocktailName = $('#cocktail_name_input').val().trim();
var cocktailSourceType = $('#cocktail_source_type_select').val();
var cocktailSourceName = $('#cocktail_source_name_input').val();
var cocktailSourceDesc = $('#cocktail_source_desc_input').val();
if (cocktailName.length < 3) {
alert('please enter a valid cocktail name');
} else {
var cocktailSteps = [];
$('#cocktail_steps_ul li').each(
function () {
var step = [];
$('span', this).each(function(){step.push($(this).text())});
fullStep = step.join(commandsSplitSign);
cocktailSteps.push(fullStep);
}
);
if (cocktailSteps.length < 2) {
alert('really? less then 2 steps cocktail ?');
} else {
data.append('cocktail_name',cocktailName);
data.append('cocktail_steps',JSON.stringify(cocktailSteps));
data.append('cocktail_source_type',cocktailSourceType);
data.append('cocktail_source_name',cocktailSourceName);
data.append('cocktail_source_desc',cocktailSourceDesc);
$.ajax({
url: 'http://api.myalcoholist.com:8888/cocktail/add_cocktail',
crossDomain: true
, type: 'POST',
enctype: 'multipart/form-data',
processData: false,
contentType: false
, data:data
}).done(function (data) {
alert(data);
});
}
}
}
);
我错过了什么?
你缺少[0]
:data.append('cocktail_image_file_input',cocktailImageFile[0])
这将 select 只有 file
对象,否则您尝试附加 FormData
无法识别的 FileList
对象。