Python REST解码FileReader :: readAsDataURL的结果

时间:2013-11-12 22:05:29

标签: javascript python django json filereader

我使用Python / Django处理REST请求 - REST中的一个元素是要上载的文件的数据URI。看起来一切都很好(js捕获文件并正确构建json),但是当我在服务器上解码文件并将二进制文件写入磁盘时,它是不同的。

我是来自.NET和Java背景的python / django的新手 - 任何帮助都不仅仅是值得赞赏的。谢谢

HTML输入控件

<input type="file" class="col-lg-6" style="padding-left: 0px" onchange="angular.element(this).scope().attachment = this.files[0]; angular.element(this).scope().$digest();"/>

从我的角度JS控制器添加图像

$scope.addImage = function () {
    var attachment = $scope.attachment
    fr = new FileReader();
    fr.onload = function () {
        $scope.public_file = $scope.public_files.concat({filename: attachment.name, data: fr.result})
        $scope.$digest()
    };
    fr.readAsDataURL(attachment);
}

解析服务器

def getData(uri):
    head, data = uri.split(',')

    decoded =data.decode('base64','strict');
    # decoded base64.b64decode(data)
    return decoded


  def create(self, request):
        data = getData(request['public_files'])

        with open(file_path, 'w+') as f:
            f.write(data)

        return super(UpdatingIdeasViewSet, self).create(request)

将客户端上的console.log(fr.result)与服务器上的request ['public_files']进行比较会产生相同的字符串。它必须是base64解码问题

1 个答案:

答案 0 :(得分:0)

打开文件进行二进制写入?

   with open(file_path, 'wb+') as f:
        f.write(data)