OpenHarmony开发者论坛
标题:
使用axios上传文件闪退
[打印本页]
作者:
梦里啥都有
时间:
2023-9-14 19:43
标题:
使用axios上传文件闪退
[md]使用picker选中图库的文件,将选中的文件使用axios上传到后台,上传过程闪退了,系统日志在下面。
经过我的分析picker可以正常的获取路径,就是上传导致的问题,
```
file://media/image/16
```
代码:
```
upload() {
const photoSelectOptions = new picker.PhotoSelectOptions;
photoSelectOptions.MIMEType = picker.PhotoViewMIMETypes.IMAGE_TYPE
photoSelectOptions.maxSelectNumber = 5
const photoPicker = new picker.PhotoViewPicker()
photoPicker.select(photoSelectOptions).then(async (photoSelectResult) => {
let uri = photoSelectResult.photoUris[0]
setTimeout(() => {
// 复制文件到缓存目录下
let file = fs.openSync(uri, fs.OpenMode.CREATE | fs.OpenMode.READ_WRITE);
fs.copyFileSync(file.fd, globalThis.cacheDir + '/photo.jpg')
fs.closeSync(file)
console.info(tag, uri)
let path = 'internal://cache/photo.jpg'
// 从filePick中获取
let formData = new FormData()
formData.append('file', path, 'picker.jpg');
formData.append('info', {key: 'ERWIOUYREUWI', name: 'vid'});
formData.append('fileId', 2009);
// 使用axios发送请求
axios.post('http://139.9.199.99:3000/tpc/upload', formData, {
headers: { 'Content-Type': 'multipart/form-data' },
context: globalThis.abilityContext,
}).then(res => {
console.info(tag, 'upload success: ' + JSON.stringify(JSON.stringify(res.data)))
}).catch(err => {
console.info(tag, 'upload error: ' + JSON.stringify(JSON.stringify(err)))
})
}, 100)
}).catch(err => {
console.info(tag, `failed to photoPicker select. Code
{err.code} , message: ${err.message}`)
})
}
```
【运行环境】
硬件:rk3568; ROM: 3.2 ; API 10
【系统日志】
![image53.png](data/attachment/forum/202310/16/152722ff4yddafy4fd1ya4.png "image (53).png")
[/md]
作者:
mean
时间:
2023-10-8 16:46
[md]使用axios上传必须添加onUploadProgress回调,而且formData中传输的数据必须是string类型,按照我的代码修改。
```
let formData = new FormData()
formData.append('file', path, 'picker.jpg');
formData.append('fileId', '2009');
// 使用axios发送请求
axios.post('http://139.9.199.99:3000/tpc/upload', formData, {
headers: { 'Content-Type': 'multipart/form-data' },
context: globalThis.abilityContext,
onUploadProgress: (progressEvent: any): void => {
console.info(JSON.stringify(progressEvent))
console.info(tag, ' progress ' + Math.ceil(progressEvent.loaded / progressEvent.total \* 100))
}
}).then(res => {
console.info(tag, 'upload success: ' + JSON.stringify(JSON.stringify(res.data)))
}).catch(err => {
console.info(tag, 'upload error: ' + JSON.stringify(JSON.stringify(err)))
})
```
[/md]
欢迎光临 OpenHarmony开发者论坛 (https://forums.openharmony.cn/)
Powered by Discuz! X3.5