2

我正在使用 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解码问题

4

1 回答 1

0

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

   with open(file_path, 'wb+') as f:
        f.write(data)
于 2013-11-13T00:18:35.243 回答