我正在使用p-fileUpload将.zip文件上传到AWS S3中,该上传工作正常,我可以通过OS应用程序正确下载并打开该文件,但是当我尝试使用InputStream Java读取同一文件时,效果不佳,例如
try (InputStream in = new URL(uri).openStream()) {
ByteArrayOutputStream out = new ByteArrayOutputStream();
IOUtils.copy(in, out);
return ByteBuffer.wrap(out.toByteArray());
} catch (IOException ex) {
throw new SomeException(ex);
}
检查文件,我看到以下数据:
------WebKitFormBoundaryhrGInEllRBnFuzls
Content-Disposition: form-data; name="MyAwesomeFunction970"; filename="hello-lambda.zip"
Content-Type: application/zip
PK
�0E��w�DA����D:5t�)��
�w�l����\1�)bvs۠�)�ĺ���>DYa#f��&��U�p�mC�GS�i��<n���$�p3ux����
------WebKitFormBoundaryhrGInEllRBnFuzls--
上面的数据包含一些标头信息,并且似乎是multipart / form-data上传的一部分。
例如,如果我通过Postman放置文件,则数据略有不同(没有标题),然后通过InputStream Java代码即可正常工作。
PK
�0E��w�DA����D:5t�)��
�w�l����\1�)bvs۠�)�ĺ���>DYa#f��&��U�p�mC�GS�i��<n���$�p3ux����
任何人都知道上传过程中发生了什么以及如何解决?
答案 0 :(得分:1)
我通过调用自定义上传方法(例如:
)解决了此问题<p-fileUpload
name="{{uploadFileName}}"
url="{{uploadUrl}}"
customUpload="true"
(uploadHandler)="customUpload($event.files, uploadUrl)">
</p-fileUpload>
customUpload(files:any, uploadUrl:string) {
var reader = new FileReader();
reader.onload = function (evt) {
var xhr = new XMLHttpRequest();
xhr.open('PUT', uploadUrl, true);
xhr.setRequestHeader('Content-Type', files[0].type);
xhr.send(evt.target.result);
};
reader.readAsArrayBuffer(files[0]);
}