HarmonyOS 鸿蒙Next Axios使用PUT方法上传ArrayBuffer字节数组,后端图片无法查看
HarmonyOS 鸿蒙Next Axios使用PUT方法上传ArrayBuffer字节数组,后端图片无法查看
试试当上传的内容为ArrayBuffer时,参考以下demo,参考文档:https://gitee.com/openharmony-sig/ohos_axios#%E5%BD%93%E4%B8%8A%E4%BC%A0%E7%9A%84%E5%86%85%E5%AE%B9%E4%B8%BAarraybuffer%E6%97%B6%E7%94%A8%E6%B3%95%E5%A6%82%E4%B8%8B
import axios from '@ohos/axios'
import { FormData } from '@ohos/axios'
import fs from '@ohos.file.fs';
// ArrayBuffer
let formData = new FormData()
let cacheDir = getContext(this).cacheDir
try {
// 写入
let path = cacheDir + '/hello.txt';
let file = fs.openSync(path, fs.OpenMode.CREATE | fs.OpenMode.READ_WRITE)
fs.writeSync(file.fd, "hello, world"); // 以同步方法将数据写入文件
fs.fsyncSync(file.fd); // 以同步方法同步文件数据。
fs.closeSync(file.fd);
// 读取
let file2 = fs.openSync(path, 0o2);
let stat = fs.lstatSync(path);
let buf2 = new ArrayBuffer(stat.size);
fs.readSync(file2.fd, buf2); // 以同步方法从流文件读取数据。
fs.fsyncSync(file2.fd);
fs.closeSync(file2.fd);
formData.append('file', buf2);
// formData.append('file', buf2, { filename: 'text.txt', type: 'text/plain'}); 设置多部分表单数据的数据名称和数据类型类型
} catch (err) {
console.info('err:' + JSON.stringify(err));
}
// 发送请求
axios.post<string, AxiosResponse<string>, FormData>(this.uploadUrl, formData, {
headers: { 'Content-Type': 'multipart/form-data' },
context: getContext(this),
onUploadProgress: (progressEvent: AxiosProgressEvent): void => {
console.info(progressEvent && progressEvent.loaded && progressEvent.total ?
Math.ceil(progressEvent.loaded / progressEvent.total * 100) + '%' : '0%');
},
}).then((res: AxiosResponse) => {
console.info("result" + JSON.stringify(res.data));
}).catch((error: AxiosError) => {
console.error("error:" + JSON.stringify(error));
})
建议参考axios官网上传ArrayBuffer示例。
在HarmonyOS鸿蒙系统中使用Axios通过PUT方法上传ArrayBuffer字节数组时,如果后端图片无法查看,可能是由于以下几个原因导致的:
-
Content-Type设置不当:确保在Axios请求中正确设置了
Content-Type
为application/octet-stream
或根据后端要求的其他二进制数据类型,以指示上传的是二进制数据。 -
后端处理逻辑问题:后端接收并处理上传的ArrayBuffer字节数组时,需要正确解析并存储为图片文件。检查后端代码,确保数据被正确解码并保存为图片格式。
-
数据损坏:在传输过程中,ArrayBuffer字节数组可能因网络问题而损坏。确保网络稳定,并检查上传的数据是否完整。
-
路径或权限问题:后端存储图片的路径可能不正确,或者服务器对存储路径没有写权限。验证存储路径和服务器权限设置。
-
缓存问题:有时浏览器或服务器缓存可能导致无法立即看到更新后的图片。尝试清除缓存或强制刷新页面。
如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html。