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