javascript - 如何将 <select> 字段添加到我的 plupload 表单中?

标签 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>

在阅读了有关 multipart 无法在使用 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>

文件上传端一切正常,但选择字段选项未发送,并且:

self.request.get("adventure") 

没有在服务器端获取任何内容。我正在使用最新版本的 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;
            },
        });
    });
});

关于javascript - 如何将 <select> 字段添加到我的 plupload 表单中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9269779/

相关文章:

python - 不是有效的选择 : Can't select ReferenceProperty value at SelectField wtform

javascript - 在 HTML 中是否可以在没有 Ajax 和/或 Javascript 的情况下创建异步请求?

jquery - 如果未收到正确响应,则运行 ajax 固定时间

javascript - 如何使用 Jquery AJAX 调用 MVC Action 然后在 MVC 中提交表单?

javascript - 弃用的 jQuery 回调 - 澄清?

google-app-engine - pubsub 推送 -> 应用引擎的性能*方式*太慢

javascript - Webpack 开发服务器抛出错误 - 拒绝执行脚本,因为它的 MIME 类型 ('text/html' )不可执行

javascript - 如何避免在子列表中调用回调函数

Javascript Date.now() 跨机器/时区的一致性

eclipse - App Engine 预览在 Eclipse 中不起作用