【问题标题】:Python REST decoding the results of FileReader::readAsDataURLPython REST 解码 FileReader::readAsDataURL 的结果
【发布时间】:2013-11-12 22:05:29
【问题描述】:

我正在使用 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();"/>

从我的 Angular 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解码问题

【问题讨论】:

    标签: javascript python django json filereader


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-09
      • 1970-01-01
      • 2013-04-27
      • 1970-01-01
      相关资源
      最近更新 更多