Javascript 如何添加<;选择>;字段到我的plupload表单?

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

我在下面这篇博客文章中详细介绍了如何将plupload与google appengine和blobstore api结合使用。我想知道如何添加一个自定义字段的上传。我已将enc类型更改为多部分/表单数据

<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()
});