joe*_*erx 14 javascript angularjs
好的,所以我尝试读取这样的PDF文件:
reader.readAsArrayBuffer(file);
Run Code Online (Sandbox Code Playgroud)
然后尝试使用以下方式将其发送到服务器$http:
$http.put(url, data, {headers: {'Content-Type': 'application/pdf'}});
Run Code Online (Sandbox Code Playgroud)
因此,只需以原始形式读取并将二进制文件发送到服务器.据一些资源,我发现,传递一个ArrayBuffer以XHR 应工作,但将它作为数据$http只是导致的请求body是这样的:{}和Content-Length=2
读取文件会readAsBinaryString()导致文件损坏(由于这个原因,显然已弃用)
用例对我来说似乎微不足道,我错过了什么?
Chrome 36,Angular 1.2.20
小智 30
你必须reader.readAsArrayBuffer(file);在onload回调中使用然后ArrayBufferView从结果中创建一个:
new Uint8Array(reader.result)
Run Code Online (Sandbox Code Playgroud)
将该数据传递给$http并覆盖该transformRequest属性,以便angularjs不会将您的数组编码为json:
reader.onload = function() {
$http({
method: 'PUT',
headers: {'Content-Type': 'application/pdf'},
data: new Uint8Array(reader.result),
transformRequest: []
})
};
reader.readAsArrayBuffer(file);
Run Code Online (Sandbox Code Playgroud)