Javascript 如何添加<;选择>;字段到我的plupload表单?
我在下面这篇博客文章中详细介绍了如何将plupload与google appengine和blobstore api结合使用。我想知道如何添加一个自定义字段的上传。我已将enc类型更改为多部分/表单数据Javascript 如何添加<;选择>;字段到我的plupload表单?,javascript,jquery,google-app-engine,jquery-plugins,plupload,Javascript,Jquery,Google App Engine,Jquery Plugins,Plupload,我在下面这篇博客文章中详细介绍了如何将plupload与google appengine和blobstore api结合使用。我想知道如何添加一个自定义字段的上传。我已将enc类型更改为多部分/表单数据 <form method="POST" enctype="multipart/form-data"> <select id="adventure" name="adventure"> <option value = "collection-A
<form method="POST" enctype="multipart/form-data">
<select id="adventure" name="adventure">
<option value = "collection-A">Collection A</option>
<option value = "collection-A">Collection B</option>
</select>
<div id="html5_uploader">
<p>You browser doesn't have Flash, Silverlight, Gears, BrowserPlus or HTML5 support.</p>
</div>
</form>
没有在服务器端拾取任何内容。我使用的是plupload的最新版本(不是Nick修改过的版本)。因此,在与之斗争了一段时间后,我切换回html5版本,不再使用BeforeUpload,我现在已经“硬编码”了中的值,但它适用于我的实现
var adventure_name = $('#adventure').val();
$('#adventure').change(function(){
adventure_name = $('#adventure').val();
});
// Setup html5 version
$(function() {
uploader = $("#html5_uploader").pluploadQueue({
// General settings
runtimes : 'html5',
max_file_size : '10mb',
url : '{{ upload_url }}',
multipart : true,
multipart_params : {'adventure': adventure_name},
unique_names : true,
// Flash settings
}).pluploadQueue();
uploader.bind('UploadFile', function(up, file)
{
$.ajax({
url: '/generate_upload_url',
async: false,
success: function(data) {
up.settings.url = data;
},
});
});
});
我认为这就是问题所在:当代码运行时,up.settings.multipart_params===未定义:
$.extend(up.settings.multipart_params, {
'adventure': $('#adventure').val()
});
表单是否已提交?数据(文件)最终在服务器端成功存储-因此,从这个意义上说,是的,表单已提交。但是,没有提交附加属性“adventure”。ajax/flash调用相当于表单提交时的“return false”。换句话说,JS生成自己的POST数据上传请求,但存储在HTML中的表单不会生成任何内容。在我看来,您需要在提交的URL中添加额外的值作为GET参数。我已经意识到,我对表单本身所做的并没有真正的效果。我已经通读了api文档,但似乎找不到任何帮助。我不清楚如何实现您的建议:“将额外值作为提交URL的GET参数”-我想这就是我使用$.extend()所做的。我不确定plupload是如何工作的,但它看起来像是您上传到某个URL。您可以尝试向url添加参数(
?param=value
),但如果需要,您需要转义它们。基本上,不是提交给http://some.url/for/upload
,您提交到http://some.url/for/upload?param=value
。不过,您可能可以通过plupload的api实现这一点。。。
var adventure_name = $('#adventure').val();
$('#adventure').change(function(){
adventure_name = $('#adventure').val();
});
// Setup html5 version
$(function() {
uploader = $("#html5_uploader").pluploadQueue({
// General settings
runtimes : 'html5',
max_file_size : '10mb',
url : '{{ upload_url }}',
multipart : true,
multipart_params : {'adventure': adventure_name},
unique_names : true,
// Flash settings
}).pluploadQueue();
uploader.bind('UploadFile', function(up, file)
{
$.ajax({
url: '/generate_upload_url',
async: false,
success: function(data) {
up.settings.url = data;
},
});
});
});
$.extend(up.settings.multipart_params, {
'adventure': $('#adventure').val()
});