我使用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解码问题
答案 0 :(得分:0)
打开文件进行二进制写入?
with open(file_path, 'wb+') as f:
f.write(data)