WEBVTT

00:00.200 --> 00:01.150
欢迎回来

00:01.160 --> 00:07.520
我们成功地从图库中获取了图像, 并在图像视图中显示了缩略图｡ 

00:07.520 --> 00:18.110
现在, 我们需要允许用户输入标题和想法, 并将此帖子上传到期刊集合, 并将此图像上传到Firebase存储｡

00:18.110 --> 00:20.960
所以我们有两件事要做｡ 

00:20.990 --> 00:29.360
我们需要上传标题想法, 用户ID, 发布日期到Firebase Firestore和图像到Firebase存储,

00:29.360 --> 00:37.100
并获取此图像的引用并将其发布到Firebase Firestore数据库｡

00:37.100 --> 00:43.390
在我们讨论保存日志方法之前, 我应该在这里提到一个非常重要的概念｡ 

00:43.400 --> 00:49.520
在处理Firebase身份验证时, 您总是需要在Onstart方法中获取此信息｡ 

00:49.520 --> 00:58.400
因此, Firebase auth dot获取当前用户并将其指定给用户, 然后将其初始化回保存日志｡

00:58.400 --> 01:03.680
我需要从编辑文本中获取标题和思想文本, 所以这很简单｡ 

01:03.680 --> 01:11.600
我将使用字符串标题等于标题编辑文本点得到文本点到字符串点修剪｡ 

01:16.360 --> 01:22.040
好吧, 我从这两个编辑文本, 帖子标题和想法中得到它们｡ 

01:22.060 --> 01:26.470
然后我需要显示进度条｡ 

01:26.470 --> 01:32.050
所以设置可见性视图点可见, 因为我正在上传｡ 

01:32.050 --> 01:34.180
所以我需要显示进度条｡ 

01:34.420 --> 01:40.120
我会检查标题和想法是否为空｡ 

01:40.120 --> 01:43.720
然后我们需要继续并上传帖子｡ 

01:43.720 --> 01:47.260
所以如果不是空的文本utils｡ 

01:47.260 --> 01:50.320
我们在之前的视频中讨论过文本实用程序｡ 

01:54.400 --> 02:00.960
我们需要检查你的图像是否是我, 我将在这里创建｡ 

02:00.970 --> 02:02.160
我们上去吧

02:02.170 --> 02:03.790
你就是我｡ 

02:03.820 --> 02:06.130
我将其命名为图像Uri｡ 

02:06.400 --> 02:10.000
在活动结果中｡ 

02:10.000 --> 02:13.930
当显示图像时, 我们需要获取图像Uri｡ 

02:16.340 --> 02:18.800
并将其赋值给结果｡ 

02:18.830 --> 02:20.920
那我就在这里继续

02:20.930 --> 02:31.070
图像I不等于null标题思想和图像I不为空, 所以继续｡ 

02:31.070 --> 02:37.090
为了保存这篇文章, 我们需要创建一个存储引用文件路径｡ 

02:37.100 --> 02:41.090
我将从使用最终存储开始｡ 

02:41.090 --> 02:49.760
我希望你们能关注我, 因为我现在使用的是Firebase文件路径中的存储服务,

02:49.760 --> 02:54.170
等于存储引用点子｡

02:54.170 --> 02:57.500
这里我需要指定文件夹｡ 

02:57.500 --> 03:04.460
我需要在Firebase存储中创建图像的保存路径, 如下所示｡ 

03:04.460 --> 03:08.780
文件夹日志图像和图像的名称｡ 

03:08.780 --> 03:15.140
在这里, 我们的图像点PNG的孩子, 这是我需要它的文件夹｡ 

03:15.170 --> 03:18.650
期刊图像点子｡ 

03:18.650 --> 03:24.650
在这里我需要指定图像的名称和时间｡ 

03:24.650 --> 03:27.650
我现在就加上时间戳

03:27.650 --> 03:31.010
我把它改成我的图片｡ 

03:31.010 --> 03:36.950
时间戳例如为2000 2310｡ 

03:36.950 --> 03:43.340
例如, 如果现在是零714, 就像这样｡ 

03:43.340 --> 03:48.530
这是时间戳, 这是一个常量或图像的名称｡ 

03:48.530 --> 03:52.340
所以我的形象强调｡ 

03:52.340 --> 03:54.200
所以我在这里加下划线｡ 

03:54.200 --> 03:56.510
如何获取时间戳

03:56.510 --> 04:03.620
这很简单, 我将使用timestamp, 它是Firebase点中包含的一个类｡ 

04:03.650 --> 04:08.690
现在的方法点得秒, 这是肺｡ 

04:08.690 --> 04:15.080
这里我把我的图像作为一个常量添加到时间戳中｡ 

04:15.080 --> 04:21.760
因此, 每个图像将被命名为this my image和它上传的时间戳｡ 

04:21.770 --> 04:23.690
现在我们需要上传图像｡ 

04:23.690 --> 04:28.580
所以文件路径不要把文件放在这里｡ 

04:28.580 --> 04:36.950
所以我得到了这个引用, 并使用put file方法来上传你或我的图像｡ 

04:36.970 --> 04:45.770
我将添加Onsuccess侦听器, 以创建一个journal对象并将其上传到存储文件路径dot

04:45.770 --> 04:53.270
get download url dot add Onsuccess｡

04:53.270 --> 05:01.070
文件路径是一个存储引用对象, 表示对Firebase Storage中文件的引用｡ 

05:01.070 --> 05:04.370
通常我在这里使用文件路径｡ 

05:04.400 --> 05:06.200
获取下载URL｡ 

05:06.230 --> 05:10.790
这是它在存储引用文件路径上调用的方法｡ 

05:10.790 --> 05:15.380
在这种情况下, 请求文件的下载URL｡ 

05:15.380 --> 05:23.480
下载URL是可公开访问的URL, 允许您下载文件和onsuccess侦听器｡ 

05:23.510 --> 05:29.930
这是一个异步回调, 您可以将其附加到获取下载URL方法｡ 

05:29.930 --> 05:35.540
它指定当成功获取下载URL时应该发生什么｡ 

05:35.570 --> 05:41.960
这里我需要传递匿名Onsuccess侦听器, 我们再次覆盖Onsuccess｡ 

05:41.960 --> 05:43.910
这里我们有Uri｡ 

05:43.940 --> 05:54.650
因此, 我需要获取一个字符串image url, 它等于Uri这个参数, 并使用string方法将其转换为图像URL,

05:54.650 --> 06:01.640
因为我需要将其上传到Firebase Firestore数据库｡

06:01.640 --> 06:11.870
现在让我们创建一个模态类journal对象, 我从journal equals开始到new journal journal

06:11.870 --> 06:19.490
dot set title to title它从编辑文本journal dot set floats到thoughts它从文本journal

06:19.490 --> 06:31.250
dot set image url到image URL, journal dot time, 添加了新的时间戳, 我会得到新的日期, journal点设置用户名,

06:31.250 --> 06:44.720
从当前用户名和journal点设置用户ID到当前用户ID｡

06:44.990 --> 06:53.480
在成功创建此日记对象并将其发布到对集合中日记的引用之后,

06:53.480 --> 07:01.220
我们需要再次移动到另一个活动或日记列表活动｡

07:01.220 --> 07:05.630
这里我需要用收藏参考点添加日志｡ 

07:05.630 --> 07:14.480
我正在上传它, 当用户成功上传时, 我们需要将他定向到日志列表活动｡

07:14.480 --> 07:15.950
所以我需要｡ 

07:16.070 --> 07:17.840
在这里传递成功的听众｡ 

07:17.840 --> 07:19.730
你可以看到这个文件的参考｡ 

07:19.730 --> 07:26.750
并且我需要隐藏进度条设置可见性视图点不可见.

07:26.750 --> 07:32.240
我需要把这个意图称为I等于新的意图｡ 

07:32.240 --> 07:34.640
添加日志活动点此｡ 

07:34.640 --> 07:38.660
我需要指引他去日记清单活动｡ 

07:40.880 --> 07:43.430
不要错过冷加工方法｡ 

07:43.430 --> 07:51.530
此外, 您可以添加失败侦听器, 如果此上传失败, 我需要显示一个toast消息,

07:51.530 --> 08:00.440
告诉用户它是失败的, 并打印E, 这是错误点获取消息E是一个例外｡

08:00.440 --> 08:08.900
好的, 现在我还可以在这里添加另一个添加失败侦听器, 新的失败侦听器, 我需要显示一个toast消息,

08:08.900 --> 08:15.620
告诉用户它失败了, 我需要隐藏进度条｡

08:15.620 --> 08:17.150
太隐形了｡ 

08:17.150 --> 08:20.570
这里我们需要显示失败｡ 

08:20.570 --> 08:21.050
好吧

08:21.050 --> 08:26.090
如果我们向上滚动, 我们可以看到这是如果我们向下滚动｡ 

08:26.090 --> 08:29.810
这是if条件的结束标记｡ 

08:29.810 --> 08:32.030
在这里我需要使用else｡ 

08:32.030 --> 08:37.130
而进度条中的点设置可见性视图中的点不可见.

08:37.160 --> 08:44.750
因为当这些文本工具为空时, 我们不需要显示这个进度条｡ 
