使用场景,通过文档扫描生成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 + '//' + filenameLogUtil.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));})})}})
`