使用场景,通过文档扫描生成pdf后,进行axios上传文件FormData。文档扫描生成文件路径为沙箱路径:file://com.huawei.hmsapp.hiai/data/storage/el2/base/haps/doc/files/com.aa.hms/DocumentScanner_1741249445097.pdf
主要代码:`
//复制
fs.open(filePathString?.content, (err, file) => {
if (err) {
console.error("file open failed with error message: " + err.message + ", error code: " + err.code);
} else {
//文件名
let filename = `${new Date().getTime()}.${'pdf'}`
//获取上下文,我在工具类里面
let filepath = AppUtil.getContext().cacheDir + '//' + filename
LogUtil.debug('测试filename is:' + filename + ', file path is:' + filepath)
fs.copyFile(file.fd, filepath, async () => {
//根据axios文档
//上传类型支持uri和ArrayBuffer,uri支持“internal”协议类型和沙箱路径。"internal://cache/"为必填字段,示例: internal://cache/path/to/file.txt;沙箱路径示例:cacheDir + '/hello.txt'
let internalUri = `internal://cache/${filename}`;
LogUtil.debug('测试internal uri is:' + internalUri)
let formData = new FormData()
formData.append('file', internalUri)
let uploadUrl = 'https://baidu.com'
// 发送请求
axios.post<string, AxiosResponse<string>, FormData>(uploadUrl,
formData, {
headers: { 'Content-Type': 'multipart/form-data' },
context: getContext(AppUtil.getContext()),
onUploadProgress: (progressEvent: AxiosProgressEvent): void => {
console.info('测试' + progressEvent && progressEvent.loaded && progressEvent.total ?
Math.ceil(progressEvent.loaded / progressEvent.total * 100) + '%' : '0%');
},
}).then((res: AxiosResponse) => {
const cameraAndFileScanBean =
JSONUtil.jsonToBean(CameraAndFileScanBean, JSON.stringify(res.data))
resolve(cameraAndFileScanWebResultBean);
}).catch((error: AxiosError) => {
console.error("测试error:" + JSON.stringify(error));
})
})
}
})
`