将照片保存到文件系统/h1>
我们现在可以在我们应用的第二个选项卡上拍摄多个照片并在照片库中显示它们。但是,这些照片目前尚未永久存储,因此当应用程序关闭时,它们将丢失。/p>
文件系统API./a>
()幸运的是,将它们保存到文件系统只需要几步。首先打开code c-id="168.20.5.1">
usephotogallery./code>
钩 (code c-id="168.23.5.3">
SRC /挂钩/ umerphallery.ts/code>
),并获得访问权限code c-id="168.26.5.5">
writefile./code>
来自备的方法code c-id="168.29.5.7">
文件系统/code>
班级:/p>
我们将使用code c-id="168.37.6.1">
writefile./code>
方法最初,但我们将使用其他问题不久,所以我们现在将继续并进口。/p>
接下来,创建几个新功能code c-id="168.44.5.1">
usephotogallery./code>
:/p>
出口/span>
功能/span>
usephotogallery./span>
(/span>
的)/span>
{/span>
Const./span>
保存图片span class="token operator" c-id="168.71.7.12">
=/span>
异步/span>
(/span>
照片span class="token operator" c-id="168.80.7.18">
:/span>
Cameraphoto.span class="token punctuation" c-id="168.83.7.20">
那/span>
文件名span class="token operator" c-id="168.86.7.22">
:/span>
细绳/span>
的)/span>
:/span>
承诺/span>
/span>
照片span class="token operator" c-id="168.101.7.31">
>/span>
=>/span>
{/span>
Const./span>
base64data.span class="token operator" c-id="168.113.7.39">
=/span>
等待/span>
Base64Frompath./span>
(/span>
照片span class="token punctuation" c-id="168.124.7.46">
。/span>
WebPath.span class="token operator" c-id="168.127.7.48">
!/span>
的)/span>
;/span>
Const./span>
savedfile.span class="token operator" c-id="168.137.7.54">
=/span>
等待/span>
文件系统span class="token punctuation" c-id="168.143.7.58">
。/span>
writefile./span>
(/span>
{/span>
小路span class="token operator" c-id="168.152.7.63">
:/span>
文件名span class="token punctuation" c-id="168.155.7.65">
那/span>
数据span class="token operator" c-id="168.158.7.67">
:/span>
base64data.span class="token punctuation" c-id="168.161.7.69">
那/span>
目录span class="token operator" c-id="168.164.7.71">
:/span>
目录span class="token punctuation" c-id="168.167.7.73">
。/span>
数据span class="token punctuation" c-id="168.170.7.75">
}/span>
的)/span>
;/span>
//使用webpath显示新图像而不是base64/span>
//已经加载到内存中/span>
返回/span>
{/span>
文件路径span class="token operator" c-id="168.189.7.87">
:/span>
文件名span class="token punctuation" c-id="168.192.7.89">
那/span>
WebViewPath.span class="token operator" c-id="168.195.7.91">
:/span>
照片span class="token punctuation" c-id="168.198.7.93">
。/span>
WebPath.span class="token punctuation" c-id="168.201.7.95">
}/span>
;/span>
}/span>
;/span>
}/span>
出口/span>
异步/span>
功能/span>
Base64Frompath./span>
(/span>
小路span class="token operator" c-id="168.229.8.1">
:/span>
细绳/span>
的)/span>
:/span>
承诺/span>
/span>
细绳/span>
>/span>
{/span>
Const./span>
回复span class="token operator" c-id="168.254.7.124">
=/span>
等待/span>
拿来/span>
(/span>
小路span class="token punctuation" c-id="168.265.7.131">
的)/span>
;/span>
Const./span>
斑点span class="token operator" c-id="168.273.7.136">
=/span>
等待/span>
回复span class="token punctuation" c-id="168.279.7.140">
。/span>
斑点/span>
(/span>
的)/span>
;/span>
返回/span>
新的/span>
承诺/span>
(/span>
(/span>
解决span class="token punctuation" c-id="168.304.8.1">
那/span>
拒绝/span>
的)/span>
=>/span>
{/span>
Const./span>
读者span class="token operator" c-id="168.319.7.162">
=/span>
新的/span>
filereader./span>
(/span>
的)/span>
;/span>
读者span class="token punctuation" c-id="168.334.7.171">
。/span>
onerror.span class="token operator" c-id="168.337.7.173">
=/span>
拒绝span class="token punctuation" c-id="168.340.7.175">
;/span>
读者span class="token punctuation" c-id="168.343.7.177">
。/span>
负载/span>
=/span>
(/span>
的)/span>
=>/span>
{/span>
如果/span>
(/span>
类型/span>
读者span class="token punctuation" c-id="168.370.7.194">
。/span>
结果span class="token operator" c-id="168.373.7.196">
===./span>
'细绳'/span>
的)/span>
{/span>
解决/span>
(/span>
读者span class="token punctuation" c-id="168.389.7.206">
。/span>
结果span class="token punctuation" c-id="168.392.7.208">
的)/span>
;/span>
}/span>
别的/span>
{/span>
拒绝/span>
(/span>
'方法没有返回字符串'/span>
的)/span>
}/span>
}/span>
;/span>
读者span class="token punctuation" c-id="168.423.7.227">
。/span>
ReadaSdataurl./span>
(/span>
斑点span class="token punctuation" c-id="168.430.7.231">
的)/span>
;/span>
}/span>
的)/span>
;/span>
}/span>
Base64Frompath方法是从提供的路径下载文件的帮助验证,并返回该文件的Base64表示。/p>
我们通过了code c-id="168.455.5.1">
Cameraphoto./code>
代表新捕获的设备照片以及文件名,它将提供要存储的文件的路径。/p>
接下来我们使用电容器a href="https://capacitor.m.jesscamp.com/docs/apis/filesystem" c-id="168.461.5.1">
文件系统API./a>
将照片保存到文件系统。我们首先将照片转换为base64格式,然后将数据馈送到文件系统的code c-id="168.464.5.3">
writefile./code>
功能。/p>
最后一次通话code c-id="168.470.5.1">
保存图片/code>
并通过Cameraphoto对象和文件名直接在呼叫下面code c-id="168.473.5.3">
设置/code>
在里面code c-id="168.476.5.5">
拍照/code>
方法。这是完整的方法:/p>
Const./span>
拍照/span>
=/span>
异步/span>
(/span>
的)/span>
=>/span>
{/span>
Const./span>
Cameraphoto.span class="token operator" c-id="168.510.7.17">
=/span>
等待/span>
相机span class="token punctuation" c-id="168.516.7.21">
。/span>
Getphoto./span>
(/span>
{/span>
结果类型span class="token operator" c-id="168.525.7.26">
:/span>
cameraresulttype.span class="token punctuation" c-id="168.528.7.28">
。/span>
Uri.span class="token punctuation" c-id="168.531.7.30">
那/span>
资源span class="token operator" c-id="168.534.7.32">
:/span>
Camerasource.span class="token punctuation" c-id="168.537.7.34">
。/span>
相机span class="token punctuation" c-id="168.540.7.36">
那/span>
质量span class="token operator" c-id="168.543.7.38">
:/span>
100./span>
}/span>
的)/span>
;/span>
Const./span>
文件名span class="token operator" c-id="168.559.7.48">
=/span>
新的/span>
日期/span>
(/span>
的)/span>
。/span>
GetTime./span>
(/span>
的)/span>
+/span>
'.jpeg'/span>
;/span>
Const./span>
SavedFileImage.span class="token operator" c-id="168.591.7.67">
=/span>
等待/span>
保存图片/span>
(/span>
Cameraphoto.span class="token punctuation" c-id="168.602.7.74">
那/span>
文件名span class="token punctuation" c-id="168.605.7.76">
的)/span>
;/span>
Const./span>
新照片span class="token operator" c-id="168.613.7.81">
=/span>
[/span>
SavedFileImage.span class="token punctuation" c-id="168.619.7.85">
那/span>
....../span>
相片span class="token punctuation" c-id="168.625.7.89">
]/span>
;/span>
设置/span>
(/span>
新照片span class="token punctuation" c-id="168.635.7.95">
的)/span>
;/span>
}/span>
;/span>
我们去了!每次拍摄新照片时,它现在都自动保存到文件系统。/p>
以前的/div>
拍照/span>
下一个/div>
在文件系统上加载照片/span>
我们现在可以在我们应用的第二个选项卡上拍摄多个照片并在照片库中显示它们。但是,这些照片目前尚未永久存储,因此当应用程序关闭时,它们将丢失。/p>
文件系统API./a>
()幸运的是,将它们保存到文件系统只需要几步。首先打开code c-id="168.20.5.1"> usephotogallery./code> 钩 (code c-id="168.23.5.3"> SRC /挂钩/ umerphallery.ts/code> ),并获得访问权限code c-id="168.26.5.5"> writefile./code> 来自备的方法code c-id="168.29.5.7"> 文件系统/code> 班级:/p>
我们将使用code c-id="168.37.6.1"> writefile./code> 方法最初,但我们将使用其他问题不久,所以我们现在将继续并进口。/p>
接下来,创建几个新功能code c-id="168.44.5.1">
usephotogallery./code>
:/p>
出口/span>
功能/span>
usephotogallery./span>
(/span>
的)/span>
{/span>
Const./span>
保存图片span class="token operator" c-id="168.71.7.12">
=/span>
异步/span>
(/span>
照片span class="token operator" c-id="168.80.7.18">
:/span>
Cameraphoto.span class="token punctuation" c-id="168.83.7.20">
那/span>
文件名span class="token operator" c-id="168.86.7.22">
:/span>
细绳/span>
的)/span>
:/span>
承诺/span>
/span>
照片span class="token operator" c-id="168.101.7.31">
>/span>
=>/span>
{/span>
Const./span>
base64data.span class="token operator" c-id="168.113.7.39">
=/span>
等待/span>
Base64Frompath./span>
(/span>
照片span class="token punctuation" c-id="168.124.7.46">
。/span>
WebPath.span class="token operator" c-id="168.127.7.48">
!/span>
的)/span>
;/span>
Const./span>
savedfile.span class="token operator" c-id="168.137.7.54">
=/span>
等待/span>
文件系统span class="token punctuation" c-id="168.143.7.58">
。/span>
writefile./span>
(/span>
{/span>
小路span class="token operator" c-id="168.152.7.63">
:/span>
文件名span class="token punctuation" c-id="168.155.7.65">
那/span>
数据span class="token operator" c-id="168.158.7.67">
:/span>
base64data.span class="token punctuation" c-id="168.161.7.69">
那/span>
目录span class="token operator" c-id="168.164.7.71">
:/span>
目录span class="token punctuation" c-id="168.167.7.73">
。/span>
数据span class="token punctuation" c-id="168.170.7.75">
}/span>
的)/span>
;/span>
//使用webpath显示新图像而不是base64/span>
//已经加载到内存中/span>
返回/span>
{/span>
文件路径span class="token operator" c-id="168.189.7.87">
:/span>
文件名span class="token punctuation" c-id="168.192.7.89">
那/span>
WebViewPath.span class="token operator" c-id="168.195.7.91">
:/span>
照片span class="token punctuation" c-id="168.198.7.93">
。/span>
WebPath.span class="token punctuation" c-id="168.201.7.95">
}/span>
;/span>
}/span>
;/span>
}/span>
出口/span>
异步/span>
功能/span>
Base64Frompath./span>
(/span>
小路span class="token operator" c-id="168.229.8.1">
:/span>
细绳/span>
的)/span>
:/span>
承诺/span>
/span>
细绳/span>
>/span>
{/span>
Const./span>
回复span class="token operator" c-id="168.254.7.124">
=/span>
等待/span>
拿来/span>
(/span>
小路span class="token punctuation" c-id="168.265.7.131">
的)/span>
;/span>
Const./span>
斑点span class="token operator" c-id="168.273.7.136">
=/span>
等待/span>
回复span class="token punctuation" c-id="168.279.7.140">
。/span>
斑点/span>
(/span>
的)/span>
;/span>
返回/span>
新的/span>
承诺/span>
(/span>
(/span>
解决span class="token punctuation" c-id="168.304.8.1">
那/span>
拒绝/span>
的)/span>
=>/span>
{/span>
Const./span>
读者span class="token operator" c-id="168.319.7.162">
=/span>
新的/span>
filereader./span>
(/span>
的)/span>
;/span>
读者span class="token punctuation" c-id="168.334.7.171">
。/span>
onerror.span class="token operator" c-id="168.337.7.173">
=/span>
拒绝span class="token punctuation" c-id="168.340.7.175">
;/span>
读者span class="token punctuation" c-id="168.343.7.177">
。/span>
负载/span>
=/span>
(/span>
的)/span>
=>/span>
{/span>
如果/span>
(/span>
类型/span>
读者span class="token punctuation" c-id="168.370.7.194">
。/span>
结果span class="token operator" c-id="168.373.7.196">
===./span>
'细绳'/span>
的)/span>
{/span>
解决/span>
(/span>
读者span class="token punctuation" c-id="168.389.7.206">
。/span>
结果span class="token punctuation" c-id="168.392.7.208">
的)/span>
;/span>
}/span>
别的/span>
{/span>
拒绝/span>
(/span>
'方法没有返回字符串'/span>
的)/span>
}/span>
}/span>
;/span>
读者span class="token punctuation" c-id="168.423.7.227">
。/span>
ReadaSdataurl./span>
(/span>
斑点span class="token punctuation" c-id="168.430.7.231">
的)/span>
;/span>
}/span>
的)/span>
;/span>
}/span>
Base64Frompath方法是从提供的路径下载文件的帮助验证,并返回该文件的Base64表示。/p>
我们通过了code c-id="168.455.5.1"> Cameraphoto./code> 代表新捕获的设备照片以及文件名,它将提供要存储的文件的路径。/p>
接下来我们使用电容器a href="https://capacitor.m.jesscamp.com/docs/apis/filesystem" c-id="168.461.5.1"> 文件系统API./a> 将照片保存到文件系统。我们首先将照片转换为base64格式,然后将数据馈送到文件系统的code c-id="168.464.5.3"> writefile./code> 功能。/p>
最后一次通话code c-id="168.470.5.1">
保存图片/code>
并通过Cameraphoto对象和文件名直接在呼叫下面code c-id="168.473.5.3">
设置/code>
在里面code c-id="168.476.5.5">
拍照/code>
方法。这是完整的方法:/p>
Const./span>
拍照/span>
=/span>
异步/span>
(/span>
的)/span>
=>/span>
{/span>
Const./span>
Cameraphoto.span class="token operator" c-id="168.510.7.17">
=/span>
等待/span>
相机span class="token punctuation" c-id="168.516.7.21">
。/span>
Getphoto./span>
(/span>
{/span>
结果类型span class="token operator" c-id="168.525.7.26">
:/span>
cameraresulttype.span class="token punctuation" c-id="168.528.7.28">
。/span>
Uri.span class="token punctuation" c-id="168.531.7.30">
那/span>
资源span class="token operator" c-id="168.534.7.32">
:/span>
Camerasource.span class="token punctuation" c-id="168.537.7.34">
。/span>
相机span class="token punctuation" c-id="168.540.7.36">
那/span>
质量span class="token operator" c-id="168.543.7.38">
:/span>
100./span>
}/span>
的)/span>
;/span>
Const./span>
文件名span class="token operator" c-id="168.559.7.48">
=/span>
新的/span>
日期/span>
(/span>
的)/span>
。/span>
GetTime./span>
(/span>
的)/span>
+/span>
'.jpeg'/span>
;/span>
Const./span>
SavedFileImage.span class="token operator" c-id="168.591.7.67">
=/span>
等待/span>
保存图片/span>
(/span>
Cameraphoto.span class="token punctuation" c-id="168.602.7.74">
那/span>
文件名span class="token punctuation" c-id="168.605.7.76">
的)/span>
;/span>
Const./span>
新照片span class="token operator" c-id="168.613.7.81">
=/span>
[/span>
SavedFileImage.span class="token punctuation" c-id="168.619.7.85">
那/span>
....../span>
相片span class="token punctuation" c-id="168.625.7.89">
]/span>
;/span>
设置/span>
(/span>
新照片span class="token punctuation" c-id="168.635.7.95">
的)/span>
;/span>
}/span>
;/span>
我们去了!每次拍摄新照片时,它现在都自动保存到文件系统。/p>