如何在我的plupload表单中添加<select>字段?

use*_*852 2 javascript jquery google-app-engine jquery-plugins plupload

我正在关注这篇博文http://blog.notdot.net/2010/04/Implementing-a-dropbox-service-with-the-Blobstore-API-part-3-Multiple-upload-support,详细介绍了如何使用plupload与google appengine和blobstore api.我想知道如何在上传中添加自定义字段.我已经将enc类型更改为multipart/form-data

<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>
Run Code Online (Sandbox Code Playgroud)

在阅读了关于使用webkit浏览器的文档中没有工作的多部分之后(我正在使用chrome)我决定使用基于flash的版本而不是我开始使用的html5.在这个论坛上使用不同的例子和讨论,我把以下内容放在一起.

<script type="text/javascript">
 $(function() {
    uploader = $("#html5_uploader").pluploadQueue({
        // General settings
        runtimes : 'html5',
        max_file_size : '10mb',
        chunk_size : '1mb',
        multipart : true,
        unique_names : true,
         // Flash settings
        flash_swf_url : '/static/plupload/plupload.flash.swf'
    }).pluploadQueue();
    uploader.bind('BeforeUpload', function (up, file) 
    {
        $.extend(up.settings.multipart_params, {
        'adventure': $('#adventure').val()
        });
    });
    uploader.bind('UploadFile', function(up, file) {
        $.ajax({
            url: '/generate_upload_url',
            async: false,
            success: function(data) {
              up.settings.url = data;
            },
        });
    });
})
</script>
Run Code Online (Sandbox Code Playgroud)

一切都在文件上传端,但不会发送选择字段选项,并且:

self.request.get("adventure") 
Run Code Online (Sandbox Code Playgroud)

不接受任何服务器端.我使用的是最新版本的plupload(不是Nick的改版).

use*_*852 5

所以经过一段时间的努力,我转回到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;
            },
        });
    });
});
Run Code Online (Sandbox Code Playgroud)


tgf*_*tgf 5

我认为这是问题所在:up.settings.multipart_params ===在此代码运行时未定义:

$.extend(up.settings.multipart_params, {
    'adventure': $('#adventure').val()
});
Run Code Online (Sandbox Code Playgroud)