0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

HarmonyOS應(yīng)用開發(fā)—文件上傳問(wèn)題的解決方式

鴻蒙時(shí)代 ? 來(lái)源:鴻蒙時(shí)代 ? 作者:鴻蒙時(shí)代 ? 2022-04-20 10:59 ? 次閱讀

在之前的分享中,曾經(jīng)提到一個(gè)文件上傳的問(wèn)題
/data/user/0/cn.jltf.neighbor/files/534.jpg: open failed: ENOENT (No such file)

該文件不存在。但實(shí)際上該文件存在并能顯示出來(lái)。后來(lái)發(fā)現(xiàn)是鴻蒙系統(tǒng)的權(quán)限問(wèn)題,只能訪問(wèn)私有目錄下的文件。

解決方法:將文件復(fù)制到私有目錄下,再進(jìn)行訪問(wèn)。

代碼如下:

HiLog.info(label,"私有目錄:"+this.getFilesDir());
HiLog.info(label,"緩存目錄:"+this.getCacheDir());
HiLog.info(label,"數(shù)據(jù)目錄:"+this.getDataDir());
HiLog.info(label,"外部目錄:"+this.getExternalCacheDir());
HiLog.info(label,"引用目錄:"+this.getPreferencesDir());
HiLog.info(label,"同步目錄:"+this.getDistributedDir());
HiLog.info(label,"應(yīng)用目錄:"+this.getDir("",Context.MODE_PRIVATE));
File[]dataChildFiles=this.getDataDir().listFiles();
for(FiledataChildFile:dataChildFiles){
HiLog.info(label,"數(shù)據(jù)子目錄:"+dataChildFile);
}
File[]externalFiles=this.getExternalMediaDirs();
for(FileexternalFile:externalFiles){
HiLog.info(label,"外部Media目錄:"+externalFile);
}

try{
//該目錄和JSUI中的internal://cache/目錄是一個(gè)目錄
Filefile=newFile(this.getCacheDir()+"/111.jpg");
HiLog.info(label,"文件路徑:"+file);
if(file.exists())
{
HiLog.info(label,"文件已存在");
return;
}
HiLog.info(label,"文件不存在");
InputStreaminputStream=getContext().getResourceManager().getResource(ResourceTable.Media_icon);
ImageSource.SourceOptionssrcOpts=newImageSource.SourceOptions();
srcOpts.formatHint="image/jpeg";
ImageSourceimageSource=ImageSource.create(inputStream,srcOpts);


//設(shè)置圖片參數(shù)
ImageSource.DecodingOptionsdecodingOptions=newImageSource.DecodingOptions();
decodingOptions.desiredSize=newSize(200,200);
imageSource.createPixelmap(decodingOptions);
//該種方式直接訪問(wèn)internal://app目錄//FileOutputStreamfos=newFileOutputStream("/data/user/0/com.example.abilitytransfertest/files//111.jpg");
FileOutputStreamfos=newFileOutputStream(this.getCacheDir()+"/111.jpg");


ImagePackerimagePacker=ImagePacker.create();
ImagePacker.PackingOptionspackingOptions=newImagePacker.PackingOptions();
packingOptions.format="image/jpeg";
packingOptions.quality=90;
booleanresult=imagePacker.initializePacking(fos,packingOptions);
if(result)
{
result=imagePacker.addImage(imageSource.createPixelmap(decodingOptions));
if(result){
longdataSize=imagePacker.finalizePacking();
HiLog.info(label,"文件大小:"+dataSize);
}
}

fos.flush();
fos.close();
if(file.exists())
{
HiLog.info(label,"文件已存在");
return;
}
}catch(IOException|NotExistExceptione){
HiLog.info(label,"文件保存出錯(cuò):"+e.getMessage());
e.printStackTrace();
}

Filefile=this.getCacheDir();
File[]files=file.listFiles();
for(Filefile1:files){
HiLog.info(label,"File目錄:"+file1);
}

審核編輯:符乾江
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 應(yīng)用開發(fā)
    +關(guān)注

    關(guān)注

    0

    文章

    59

    瀏覽量

    9398
  • HarmonyOS
    +關(guān)注

    關(guān)注

    79

    文章

    1980

    瀏覽量

    30333
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    鴻蒙原生應(yīng)用元服務(wù)開發(fā)-Web上傳文件

    Web組件支持前端頁(yè)面選擇文件上傳功能,應(yīng)用開發(fā)者可以使用onShowFileSelector()接口來(lái)處理前端頁(yè)面文件上傳的請(qǐng)求。 下面的
    發(fā)表于 05-08 11:17

    #硬聲創(chuàng)作季 #HarmonyOS HarmonyOS應(yīng)用開發(fā)-06.3 分布式文件系統(tǒng)-1

    文件文件系統(tǒng)HarmonyOS
    水管工
    發(fā)布于 :2022年11月16日 12:00:52

    #硬聲創(chuàng)作季 #HarmonyOS HarmonyOS應(yīng)用開發(fā)-06.3 分布式文件系統(tǒng)-2

    文件文件系統(tǒng)HarmonyOS
    水管工
    發(fā)布于 :2022年11月16日 12:01:12

    HarmonyOS應(yīng)用開發(fā)-okhttp3.0快速集合文件上傳

    應(yīng)用開發(fā)過(guò)程中經(jīng)常需要進(jìn)行文件上傳功能開發(fā),通過(guò)okhttp3.0可以快速集合完成文件上傳的功能。代碼如下:OkHttpClient htt
    發(fā)表于 03-08 14:23

    HarmonyOS應(yīng)用開發(fā)-圖片文件上傳錯(cuò)誤交流

    開發(fā)過(guò)程中,遇到一個(gè)上傳文件時(shí)的錯(cuò)誤,特地在此記錄一下。相關(guān)代碼:/** 圖片上傳* */public static void sendMultipart(String urlAdd
    發(fā)表于 03-25 11:06

    HarmonyOS應(yīng)用開發(fā)-文件上傳問(wèn)題的解決方式

    在之前的分享中,曾經(jīng)提到一個(gè)文件上傳的問(wèn)題/data/user/0/cn.jltf.neighbor/files/534.jpg: open failed: ENOENT (No such file
    發(fā)表于 04-20 15:27

    怎樣通過(guò)遠(yuǎn)程連接方式控制云端真機(jī)對(duì)HarmonyOS應(yīng)用進(jìn)行測(cè)試呢

    通過(guò)遠(yuǎn)程連接方式控制云端真機(jī)對(duì)HarmonyOS應(yīng)用進(jìn)行測(cè)試,包括HarmonyOS應(yīng)用在遠(yuǎn)程真機(jī)上的安裝、測(cè)試等,當(dāng)前支持的真機(jī)設(shè)備包含TV、Lite Wearable設(shè)備、Phone和平板電腦
    發(fā)表于 05-24 14:45

    基于PHP大文件上傳的研究和設(shè)計(jì)

    基于PHP大文件上傳的研究和設(shè)計(jì),感興趣的可以看看。
    發(fā)表于 02-22 18:15 ?6次下載

    基于Iframe內(nèi)聯(lián)框架的異步文件上傳與刪除

    在Weh應(yīng)用程序開發(fā)過(guò)程中,文件上傳功能是個(gè)很常用又非常重要的功能,它要處理的內(nèi)容主要包括:如何將上傳文件
    發(fā)表于 11-11 10:20 ?5次下載
    基于Iframe內(nèi)聯(lián)框架的異步<b class='flag-5'>文件</b><b class='flag-5'>上傳</b>與刪除

    如何在java上傳和下載文件

    文件上傳在web應(yīng)用中非常普遍,要在jsp環(huán)境中實(shí)現(xiàn)文件上傳功能是非常容易的,因?yàn)榫W(wǎng)上有許多用java開發(fā)
    發(fā)表于 11-13 08:00 ?11次下載

    java Web如何實(shí)現(xiàn)文件上傳與下載

    文件上傳概述,實(shí)現(xiàn)web開發(fā)中的文件上傳功能,需完成如下二步操作: 在web頁(yè)面中添加上傳輸入
    發(fā)表于 03-06 11:03 ?7次下載
    java Web如何實(shí)現(xiàn)<b class='flag-5'>文件</b>的<b class='flag-5'>上傳</b>與下載

    HarmonyOS應(yīng)用開發(fā)okhttp3.0快速集合文件上傳

    ? ? ? ? ?應(yīng)用開發(fā)過(guò)程中經(jīng)常需要進(jìn)行文件上傳功能開發(fā),通過(guò)okhttp3.0可以快速集合完成文件上傳的功能。 代碼如下: OkHtt
    的頭像 發(fā)表于 03-08 10:24 ?1762次閱讀

    HarmonyOS應(yīng)用開發(fā)—圖片文件上傳錯(cuò)誤交流

    開發(fā)過(guò)程中,遇到一個(gè)上傳文件時(shí)的錯(cuò)誤,特地在此記錄一下。 相關(guān)代碼: /** 圖片上傳* */public static void sendMultipart(String urlA
    的頭像 發(fā)表于 03-25 10:27 ?1618次閱讀

    MarkDown文件插入圖片并上傳GitHub

    MarkDown文件插入圖片并上傳GitHub
    的頭像 發(fā)表于 01-12 17:02 ?1064次閱讀

    前端文件上傳的幾種交互造輪子

    可以用剪貼板功能讓自己的 cv 實(shí)現(xiàn)文件上傳,于是自己就整合了目前幾種文件上傳的交互方式,碼了一個(gè)支持 cv 的 vue3
    的頭像 發(fā)表于 07-04 10:39 ?548次閱讀