【问题标题】:Submitting Dropzone.js with base64 encoding file使用 base64 编码文件提交 Dropzone.js
【发布时间】:2013-11-21 17:20:14
【问题描述】:

我正在尝试从 dropzone.js 对文件进行 base64 编码,并使用 PJAX 将其发送到处理程序页面。但是我有一个问题,base64_data 在 POST 请求中为空。

$(document).ready(function(){
    Dropzone.autoDiscover = false;
    $("#file-form").dropzone({
        paramName: 'file',
        clickable: true,
        maxFilesize: 1,
        uploadMultiple: false,
        autoProcessQueue: false,
        accept: function(file, done){
            reader = new FileReader();
            reader.onload = handleReaderLoad;
            reader.readAsDataURL(file);
            function handleReaderLoad(evt) {
                document.getElementById("id_base64_data")
                    .setAttribute('value', evt.target.result);
            }
            document.getElementById("id_base64_name")
                .setAttribute('value', file.name);
            document.getElementById("id_base64_content_type")
                .setAttribute('value', file.type);
            form = $('#file-form');
            $.pjax( {
                method: "POST",
                container: "#pjax-container", 
                timeout: 2000,
                url: "/upload/",
                data: form.serialize(),
            });
            done();
        },
    });
});

表格:

<form class="form-horizontal dropzone dz-clickable" id="file-form" action="/upload/" method="post" enctype="multipart/form-data" name="file-form">
    <input id="id_base64_data" name="base64_data" type="hidden">
    <input id="id_base64_name" name="base64_name" type="hidden">
    <input id="id_base64_content_type" name="base64_content_type" type="hidden">
    <div class="fileupload fileupload-new" data-provides="fileupload">
        <legend>Search for file</legend>
    </div>
<div class="dz-default dz-message"><span>Drop files here to upload</span></div>
</form>

有什么提示吗?

【问题讨论】:

    标签: javascript forms dropzone.js


    【解决方案1】:

    在发送 pjax 请求后执行延迟 handleReaderLoad 是一个问题。工作示例:

    $(document).ready(function(){
        Dropzone.autoDiscover = false;
        $("#file-form").dropzone({
            paramName: 'file',
            clickable: true,
            maxFilesize: 1,
            uploadMultiple: false,
            autoProcessQueue: false,
            accept: function(file, done){
                reader = new FileReader();
                reader.onload = handleReaderLoad;
                reader.readAsDataURL(file);
                function handleReaderLoad(evt) {
                    document.getElementById("id_base64_data")
                        .setAttribute('value', evt.target.result);
                    document.getElementById("id_base64_name")
                        .setAttribute('value', file.name);
                    document.getElementById("id_base64_content_type")
                        .setAttribute('value', file.type);
                    form = $('#file-form');
                    $.pjax( {
                        method: "POST",
                        container: "#pjax-container", 
                        timeout: 2000,
                        url: "/upload/",
                        data: form.serialize(),
                    });
                }
                done();
            },
        });
    });
    

    【讨论】:

    • 感谢这个 sn-p :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-12
    • 1970-01-01
    • 2014-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多