首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用HTML 5将二进制Sting发布到Django应用程序

使用HTML 5将二进制Sting发布到Django应用程序
EN

Stack Overflow用户
提问于 2010-10-13 00:39:27
回答 1查看 1.1K关注 0票数 1

我通过HTML5 FileReader和jQuery读取了一个文件,如下所示:

代码语言:javascript
复制
holder.ondrop = function(e) {
    this.className = '';
    e.preventDefault();

    var file = e.dataTransfer.files[0],
    reader = new FileReader();

    reader.onloadend = function(event) {
        $.ajax({  
        url:"/path/to/upload",
        type: "POST",  
        data: event.target.result, 
        success: function(data, status, xhr) {
         alert("success!");
        },
        error: function(xhr, status, error) {
         alert("fail")
        },
        });
    };

    reader.readAsBinaryString(file);
    return false;
};

"ondrop“用于处理我已命名为"holder”的元素上的拖放。

该文件将提交到我的django应用程序,如果我只需

代码语言:javascript
复制
print request.raw_post_data

我在控制台中看到二进制输出。

我尝试将此代码写入到一个文件中,如下所示(是的,在我的测试中,它始终是一个jpg):

代码语言:javascript
复制
f = open('/tmp/file.jpg', 'wb')
f.write(request.raw_post_data)
f.close()

文件已经写入,但当我试图打开它时,它似乎已损坏。

我怀疑这与request.raw_post_data编码错误有关,但我不太确定如何纠正它……虽然raw_post_data ()返回str,但它看起来像二进制。

有什么想法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-10-13 02:07:23

这篇文章对我真的很有帮助,也许对你也有帮助。

http://hacks.mozilla.org/2010/06/html5-adoption-stories-box-net-and-html5-drag-and-drop/

我最终将我的javascript更改为:

代码语言:javascript
复制
holder.ondrop = function(e) {
        e.preventDefault();

        var file = e.dataTransfer.files[0];
        var request = new XMLHttpRequest();

        request.open("POST",  upload_url, true); // open asynchronous post request
        request.setRequestHeader("X-Requested-With", "XMLHttpRequest");
        request.send(file);        
    };

瞧,瞧。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3916989

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档