鸿蒙 oss图片上传
·
目前oss没有请求的sdk 只能由后台进行上传
从相机获取照片
async function picture(): Promise<string> {
let PhotoSelectOptions = new photoAccessHelper.PhotoSelectOptions();
PhotoSelectOptions.MIMEType = photoAccessHelper.PhotoViewMIMETypes.IMAGE_TYPE;
PhotoSelectOptions.maxSelectNumber = 1;
PhotoSelectOptions.isSearchSupported = false;
PhotoSelectOptions.isEditSupported = false;
PhotoSelectOptions.isPreviewForSingleSelectionSupported = false;
let photoPicker = new photoAccessHelper.PhotoViewPicker();
let uri = ''
await photoPicker.select(PhotoSelectOptions).then(async (PhotoSelectResult: photoAccessHelper.PhotoSelectResult) => {
let photouri: Array<string> = PhotoSelectResult.photoUris
uri = photouri[0]
});
return uri;
}
1.获取uri
2,展示pixlmap
前两步基本是你自己的业务需要,直接获取系统的相机就可以完成的
3.保存到沙箱
怎么保存到沙箱看你使用的是什么,我这里使用的是裁剪后的pixlmap
// 将pixelMap转成图片格式
transferPixelMap2Buffer(pixelMap: image.PixelMap): Promise<ArrayBuffer> {
return new Promise((resolve, reject) => {
/**
* 设置打包参数
* format:图片打包格式,只支持 jpg 和 webp
* quality:JPEG 编码输出图片质量
* bufferSize:图片大小,默认 10M
*/
let packOpts: image.PackingOption = { format: 'image/jpeg', quality: 75 };
// 创建ImagePacker实例
const imagePackerApi = image.createImagePacker();
imagePackerApi.packing(pixelMap, packOpts).then((buffer: ArrayBuffer) => {
resolve(buffer);
}).catch((err: BusinessError) => {
reject();
})
})
}
const file = fileIo.openSync(this.filesDir + //ceshi.jpg,
fileIo.OpenMode.READ_WRITE | fileIo.OpenMode.CREATE);
await fileIo.write(file.fd, imgBuffer);
4.使用formData
let fdata :FormData = new FormData()
let internalUri = ‘internal://cache/’+file.name;
fdata.append(‘file’,internalUri) //
6.config 需要添加一个context
需要在请求前拦截,加上 context和Content-type
config.headers[‘Content-type’] = ‘multipart/form-data’
config.context = getContext()
7.展示拿到后台传回来的url 加上前缀,你就可以去显示了
更多推荐

所有评论(0)