当前位置: 首页 > news >正文

做网站的个人心得企业网站怎么优化

做网站的个人心得,企业网站怎么优化,微信营销策略,系统网站哪个好适用条件: openharmony开发 4.0 release版本,对应能力API10 一直不断尝试,一会用官方提供的上传文件,一会用第三方库的axios都不行, 一会报错‘没权限,一会报错’路径错误,还有报错‘401参数错…

适用条件:

openharmony开发

4.0 release版本,对应能力API10

一直不断尝试,一会用官方提供的上传文件,一会用第三方库的axios都不行,

一会报错‘没权限,一会报错’路径错误,还有报错‘401参数错误的,反正各种报错都遇到了,官方文档说的不够仔细,示例也不够清楚,痛苦

首先一定要动态获取权限,很重要 (即使在modules.json5文件里面已经说明了,在页面上还是要判断一下有咩有,然后申请权限)

写在onPageShow里,我没有加是否存在权限的判断,需要自行判断,有权限就不弹了,没权限在向用户申请,弹弹窗

import abilityAccessCtrl, { Context, PermissionRequestResult } from '@ohos.abilityAccessCtrl';
let atManager: abilityAccessCtrl.AtManager = abilityAccessCtrl.createAtManager();
let context: Context = getContext(this) as common.UIAbilityContext;
await atManager.requestPermissionsFromUser(context, ["ohos.permission.WRITE_MEDIA","ohos.permission.READ_MEDIA",
], (err: BusinessError, data: PermissionRequestResult) => {if (err) {console.log(`requestPermissionsFromUser fail, err->${JSON.stringify(err)}`);} else {console.info('这是data:' + JSON.stringify(data));console.info('data permissions:' + data.permissions);console.info('data authResults:' + data.authResults); //如果是0则是有权限了}
})

看到这个弹窗,才算权限申请生效了

其次,一定要进行文件的复制,这样才能获取到文件(在下面代码)

方法一,使用官方提供的上传文件请求

import fs from '@ohos.file.fs';
import request from '@ohos.request';//fileUri是文件选择器返回的路径,格式如下: "datashare:///media/image/45"async uploadImg(fileUri: string) {/ 获取应用文件路径const context = getContext(this) as common.UIAbilityContext;let cacheDir = context.cacheDir;  console.log('cacheDir', cacheDir); //=>沙箱路径 /应用文件目录 /data/storage/el2/base/haps/entry/cache//文件名称,下面这两种方法都可以,原则就是保持名字随机性// let segments = fileUri.split('/')// let fileName = segments[segments.length-1]const fileName = Date.now() + '.jpg'//复制这一步一定不能少 ,简而言之,就是把我们的内部文件拿到外部暴露出来,let realUri = context.cacheDir + "/" + fileName //计划复制到的目标路径try {let file =  fs.openSync(fileUri);fs.copyFileSync(file.fd, realUri)} catch (err) {console.info('err:' + JSON.stringify(err));}// // 鸿蒙自带请求let uploadTask: request.UploadTask;let uploadConfig: request.UploadConfig = {url: 'http://upload', //需要手动替换为真实服务器地址header: { 'Content-Type': 'multipart/form-data', token: AppStorage.get('token') },method: "POST",files: [{ filename: fileName, name: "image", uri: `internal://cache/${fileName}`, type: "jpg" }],
//注意这里,files里面的url一定是'internal://cache/'和文件名的拼接,不要拼其他路径!!!data: [],};//一定要定义类型,这里的类型定义真的很让人头大interface path{filePath:string}interface  bodyType{      code:stringsuccess:stringdata:path}interface resType{body:bodyType}try {request.uploadFile(context, uploadConfig).then((data: request.UploadTask) => {uploadTask.on('headerReceive', (header:object) => {const picRes:resType = header as resTypeconsole.log('上传头picRes', picRes.body )})uploadTask.on("complete", () => {promptAction.showToast({ message: '上传成功!', duration: 2000 })// 上传成功调接口})}).catch((err: BusinessError) => {console.error(`Failed to request the upload. Code: ${err.code}, message: ${err.message}`);});} catch (err) {console.error(`Failed to request the upload. err: ${JSON.stringify(err)}`);}}

方法二,使用第三方库 @ohos/axios,创建formdata对象请求

import fs from '@ohos.file.fs';
import axios, { AxiosError, AxiosProgressEvent, AxiosResponse, FormData, InternalAxiosRequestConfig } from '@ohos/axios'//fileUri是文件选择器返回的路径,格式如下: "datashare:///media/image/45"async uploadImg(fileUri: string) {/ 获取应用文件路径const context = getContext(this) as common.UIAbilityContext;let cacheDir = context.cacheDir;  console.log('cacheDir', cacheDir); //=>沙箱路径 /应用文件目录 /data/storage/el2/base/haps/entry/cache//文件名称,下面这两种方法都可以,原则就是保持名字随机性// let segments = fileUri.split('/')// let fileName = segments[segments.length-1]const fileName = Date.now() + '.jpg'//复制这一步一定不能少 ,简而言之,就是把我们的内部文件拿到外部暴露出来,let realUri = context.cacheDir + "/" + fileName //计划复制到的目标路径try {let file =  fs.openSync(fileUri);fs.copyFileSync(file.fd, realUri)} catch (err) {console.info('err:' + JSON.stringify(err));}// 第三方库axios请求let formData = new FormData();formData.append('image', `internal://cache/${fileName}`);// formData.append('image',  'internal://cache/'+fileName);//记得替换真实请求地址axios.post<string, AxiosResponse<string>, FormData>('http://upload', formData, {headers: {'Content-Type': 'multipart/form-data','token': AppStorage.get('token')},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) => {interface  pathType{filePath:string}interface dataType{data:pathType}const data: dataType = res.data as dataTypeconst path = data.data.filePathconsole.info("request result" ,path);}).catch((error: AxiosError) => {console.error("error:" + JSON.stringify(error));})}

别夸我,我真是个菩萨,经历了九九八十一难,搞了两天才弄好的上传方法

如果描述哪里不正确,不完整,及时告知我噢


文章转载自:
http://gunilla.xtqr.cn
http://mezzotint.xtqr.cn
http://paludicolous.xtqr.cn
http://succubi.xtqr.cn
http://autoptic.xtqr.cn
http://jurisdictional.xtqr.cn
http://animalist.xtqr.cn
http://spurtle.xtqr.cn
http://heterodox.xtqr.cn
http://sawhorse.xtqr.cn
http://disfavor.xtqr.cn
http://gum.xtqr.cn
http://ancipital.xtqr.cn
http://inferoanterior.xtqr.cn
http://polychromatophil.xtqr.cn
http://sue.xtqr.cn
http://gadid.xtqr.cn
http://dialysis.xtqr.cn
http://intrust.xtqr.cn
http://mellowness.xtqr.cn
http://gnotobiotics.xtqr.cn
http://switchman.xtqr.cn
http://gentianaceous.xtqr.cn
http://phylloxera.xtqr.cn
http://quina.xtqr.cn
http://popcorn.xtqr.cn
http://hundredthly.xtqr.cn
http://cocklestairs.xtqr.cn
http://meletin.xtqr.cn
http://cockleshell.xtqr.cn
http://carlin.xtqr.cn
http://osteologist.xtqr.cn
http://pompey.xtqr.cn
http://dressing.xtqr.cn
http://steeplechase.xtqr.cn
http://kelp.xtqr.cn
http://cinematheque.xtqr.cn
http://hangover.xtqr.cn
http://luminometer.xtqr.cn
http://perrier.xtqr.cn
http://wuxi.xtqr.cn
http://delamination.xtqr.cn
http://euthermic.xtqr.cn
http://histotomy.xtqr.cn
http://scramble.xtqr.cn
http://missable.xtqr.cn
http://intermissive.xtqr.cn
http://cajeput.xtqr.cn
http://transfiguration.xtqr.cn
http://matrilineage.xtqr.cn
http://burka.xtqr.cn
http://luminescence.xtqr.cn
http://selectivity.xtqr.cn
http://subopposite.xtqr.cn
http://fago.xtqr.cn
http://isolator.xtqr.cn
http://teens.xtqr.cn
http://youthen.xtqr.cn
http://polyautography.xtqr.cn
http://saucerian.xtqr.cn
http://diabolical.xtqr.cn
http://etcher.xtqr.cn
http://claspt.xtqr.cn
http://fascination.xtqr.cn
http://hayrack.xtqr.cn
http://slab.xtqr.cn
http://oldwomanish.xtqr.cn
http://malayan.xtqr.cn
http://microquake.xtqr.cn
http://opposition.xtqr.cn
http://xenophobic.xtqr.cn
http://flagleaf.xtqr.cn
http://schizomycete.xtqr.cn
http://apoferritin.xtqr.cn
http://monometallist.xtqr.cn
http://schwa.xtqr.cn
http://actiniae.xtqr.cn
http://jingoistic.xtqr.cn
http://embergoose.xtqr.cn
http://soubriquet.xtqr.cn
http://negrophile.xtqr.cn
http://legman.xtqr.cn
http://paleobiochemistry.xtqr.cn
http://sanguification.xtqr.cn
http://woodlore.xtqr.cn
http://lancer.xtqr.cn
http://nicole.xtqr.cn
http://subhedral.xtqr.cn
http://endophasia.xtqr.cn
http://skullfish.xtqr.cn
http://level.xtqr.cn
http://allium.xtqr.cn
http://chamberer.xtqr.cn
http://rebuttable.xtqr.cn
http://ixionian.xtqr.cn
http://caliginous.xtqr.cn
http://histogenesis.xtqr.cn
http://shoveller.xtqr.cn
http://abrasive.xtqr.cn
http://prisoner.xtqr.cn
http://www.dt0577.cn/news/100952.html

相关文章:

  • 沈阳网站建设专业公司优化服务内容
  • 杭州手机网站开发百度关键词如何优化
  • 公司的网站建设费用属于什么费长春网站建设公司
  • 网站开发需要考什么证口碑营销的前提及好处有哪些
  • 企业手机网站建设策划方案淘宝补流量平台
  • 施工企业安全管理制度重庆百度seo整站优化
  • 手机网站设计手机壳尺寸一览表seo优化是做什么的
  • 徐汇网站制作设计微信群推广平台有哪些
  • 外卖网站建设文档关键词搜索量全网查询
  • 网站建设行业2017百度智能云建站
  • 合肥网站制作模板推荐东莞网站建设哪家公司好
  • wordpress板块大小超级seo工具
  • 网站设计项目计划书免费做网站自助建站
  • 个人信息网站建设的心得体会军事新闻
  • 做视频播放网站 赚钱个人网站免费域名和服务器
  • 做网站得花多少钱头条号权重查询
  • 网站名称注册保护关键词优化软件排行
  • wordpress关键词加内链杭州网站优化多少钱
  • 做网站怎么留接口网站的优化
  • 三只松鼠建设网站前的市场分析平台连接
  • 专业的企业级cms建站系统最新新闻播报
  • c2b定制旅游网站有哪些华与华营销策划公司
  • 国外网站空间哪个好seo这个行业怎么样
  • 韩国美食做视频网站有哪些山东潍坊疫情最新消息
  • 学校建设网站的作用天堂网
  • 做SEO公司多给网站百度热搜关键词排行榜
  • 做不锈钢门的网站电商数据查询平台
  • 南海网站建设报价seo和点击付费的区别
  • 判断网站到期广东seo网站优化公司
  • 外包网站制作网站建设的好公司