下载 Firebase 存储文件设备问题

2023-12-14

我正在尝试从 Firebase 存储下载 Word 文档。在模拟器上一切都按预期工作。然而在我的设备上,我收到以下错误:

可选(错误域=FIRStorageErrorDomain代码=-13000“发生未知错误,请检查服务器响应。”UserInfo={object=2016年10月26日.docx,bucket=app.appspot.com,NSLocalizedDescription=发生未知错误,请检查服务器响应。, ResponseErrorDomain=NSCocoaErrorDomain, NSFilePath=/tmp/bulletin, NSUnderlyingError=0x1702590b0 {Error Domain=NSPOSIXErrorDomain Code=1 "Operation not allowed"}, ResponseErrorCode=513})

我一直在看的其他帖子似乎没有给我一个有效的答案,我所知道的是文件权限存在问题,即使我使用推荐的目录(tmp)。

这是下载文件的代码

 let Ref_Bulletin = Bulletin.referenceForURL("gs:/app.appspot.com/Bulletin/\(Today.stringFromDate(NSDate())).docx")

    // Create local filesystem URL
    let localURL: NSURL! = NSURL(string: "file:///tmp/today.docx")


        // Download to the local filesystem
        let downloadTask = Ref_Bulletin.writeToFile(localURL) { (URL, error) -> Void in
            if (error != nil) {
                print(error.debugDescription)
                // Uh-oh, an error occurred!
            } else {
                print("Working As Expected")
                self.Web_View.loadRequest(NSURLRequest(URL: localURL))
            }

那么是什么导致了这个问题以及如何解决它呢?

Update:

因此,我尝试创建该目录,但我被告知我没有权限,即使文档说我可以写入 tmp。

无法创建目录错误域=NSCocoaErrorDomain代码=513“您无权将文件“today.docx”保存在文件夹“h”中。” UserInfo={NSFilePath=/tmp/h/today.docx,NSUnderlyingError=0x1702498a0 {错误域=NSPOSIXErrorDomain代码=1“不允许操作”}}

这是创建目录的代码:

 do {
        try NSFileManager.defaultManager().createDirectoryAtPath(localURL.path!, withIntermediateDirectories: true, attributes: nil)
    } catch let error as NSError {
        NSLog("Unable to create directory \(error.debugDescription)")
    }

我认为这里的问题是tmp and Documents目录实际上并不存在于/tmp and /Documents(例如,看起来好像/Documents实际上是/User/Documents,这实际上是/private/var/mobile/Documents, see: https://www.theiphonewiki.com/wiki/)

您需要确保根据系统认为这些目录所在的位置而不是字符串来创建文件 URL:

NSURL *tmpDirURL = [NSURL fileURLWithPath:NSTemporaryDirectory()];
NSURL *fileURL = [[tmpDirURL URLByAppendingPathComponent:@"my_file"] URLByAppendingPathExtension:@"txt"];

或类似的NSDocumentDirectory。至于为什么在模拟器上有效:我认为这是因为模拟器上的沙箱与真实设备上的工作方式不同,而且/tmp显然是一个可以写入的有效位置(尽管可能不是您想要写入两个的位置,正如当您尝试在真实设备上执行操作时 iOS 发出嘶嘶声所证明的那样)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

下载 Firebase 存储文件设备问题 的相关文章

随机推荐

  • 使用 Java 和 Samba JCIFS 访问文件

    我有一个关于使用 Samba JCIFS 访问文件的问题 所以我想访问一个服务器 我们将其称为server unv edu 工作组是WKGRP 此服务器中有一个共享 server unv edu pcb 我尝试访问服务器的方式是 publi
  • 防止变量名被 read.csv/read.table 破坏?

    我的数据集testdata有 2 个名为PWGTP and AGEP 数据位于 csv file 当我做 gt head testdata 变量显示为 PWGTP AGEP 23 55 26 56 24 45 22 51 25 54 23
  • 通过文件输入选择多个文件时删除单个文件

    当允许用户选择多个文件时 是否可以从要上传的文件列表中删除单个文件 例如 我有一个看起来有点像这样的输入
  • Android:使用 xslt 转换 xml

    我想使用 xsl 文件转换一些 xml 并以某种方式输出结果 我使用的是 Android Api Level 8 我当前的活动如下所示 但变压器保持为空 LogCat 抛出一个System err with org apache harmo
  • 如何消除const_iterator的常量性?

    作为这个问题的延伸Are const iterators faster 我还有一个问题const iterators 如何消除 a 的常量性const iterator 虽然迭代器是指针的广义形式 但仍然const iterator and
  • 获取 Dart 中的当前日期

    如何在 Dart 中获取独立于系统日期和时间的当前日期 我努力了DateTime now但它给出的是系统日期而不是实际日期 以防系统日期被更改 如果您不相信系统会给出正确的时间 则需要向其他地方询问以获取时间 这可以通过多种方式完成 具体取
  • ABP 中实体的 DTO 映射异常

    当我尝试插入实体时 出现有关 映射 的错误 插入物是由CreateCrudAppService 的方法 我的实体继承自FullAuditedEntity但相关的 DTO 仅指定了几个属性 我该如何处理这种情况 Unmapped member
  • 删除所有的 .字符串中除最后一个之外的(点)

    我需要删除字符串中除最后一个点之外的所有点 例如 如果字符串是 1 2 3 4 5 则结果需要是 1234 5 这是在 powershell 中 我做不到 先感谢您 正则表达式替换 所有点后面没有点 1 2 3 4 replace
  • 在 C++、OpenGL 中使用 De Casteljau 算法绘制贝塞尔曲线

    我正在尝试找到使用 decasteljau 算法生成贝塞尔曲线的方法 以完成我的一项作业 我能够使用正常方法生成贝塞尔曲线 但无法开始使用上述算法生成 如果有人可以建议我正确的方向或分享您拥有的任何代码 这将会有很大的帮助 我不只是按原样询
  • 萤火虫错误:找不到元素

    1客户端 通过 AJAX fn 向服务器发送请求 2服务器 响应形式为text xml并且只能正常运行 1 到 2 次 response setContentType text xml 3但仅在 1 2 请求之后 我在浏览器中收到错误 fi
  • 从 Google 云端硬盘下载图像

    我正在尝试使用 python api 从 Google Drive 下载一些图像文件 我使用的代码首先获取文件资源对象 找到 downloadUrl 并使用它来下载文件 问题是gif和png文件似乎没有下载网址 service self u
  • 连接到 Paypal 时出现 OpenSSL::SSL::SSLError (SSL_connect returned=1 errno=0 state=SSLv3 读取服务器证书 B:证书验证失败)

    我知道有很多关于此错误的讨论 但遗憾的是我无法在那里找到任何可行的解决方案 我正在开发一个电子商务网站分享部落 我正在尝试将 Paypal 实施为支付网关 所以我正在使用活跃商户 在开发机器上一切正常 但是当我将 Rails 应用程序部署到
  • 在 Android 所有活动上设置标签栏底部

    我开发了一款Android应用程序 在这里 我必须在所有 Android 活动上设置选项卡栏底部 我该怎么做 请给我解决方案 我总共有 10 个活动 这意味着选项卡栏显示在所有 10 个活动的按钮上 我在 android 中该怎么做 请帮助
  • BroadcastReceiver获取ServiceState信息

    有谁知道在android中获取电话服务状态 IN SERVICE OUT OF SERVICE EMERGENCY ONLY POWER OFF 的方法 我希望有一个广播接收器来识别这些变化 但我找不到任何东西 我知道有一个侦听器 但我不确
  • 如何在 R 中计算这个求和?

    如果我们有一个数据集 其中 x ij 的大小为 4 x 3 矩阵 i 1 2 3 4 且 j 1 2 3 y i 是一个向量 z ij 也是一个 4 x 3 矩阵 a1 c 1 0 1 2 a2 c 2 2 1 2 a3 c 1 3 2 3
  • 错误 无法安装应用程序。确保您已设置 Android 开发环境

    我创建了react native项目 然后在终端打开该文件夹 运行 npm start 然后 react native run android 后 我能够在虚拟设备上运行它 但是 当我从 vscode 终端执行此操作时 出现以下错误 信息
  • 将 JTextfield 放在 JPanel 上?

    为什么文本字段没有出现在框架内的面板上 我的意思是是否需要一些额外的操作来制作面板的组件 可见的 我希望有人能帮助我 public class example1 public static void main String args JFr
  • 外部函数:在 C 脚本中引用头文件来编译 dll

    使用 Dymola 2017 情况 A 调用外部 c 脚本 我已经成功实现了没有 include 语句的简单外部 c 函数 模型功能 function chirp input Modelica SIunits AngularVelocity
  • 使用 data.table R 以滚动方式提取累积唯一值(重置和恢复)

    给定一个 data table 我想提取累积的唯一元素 直到达到三个唯一值 然后重置并恢复 y lt data table a c 1 2 2 3 3 4 3 2 2 5 6 7 9 8 所需的输出 unique acc roll 3 为
  • 下载 Firebase 存储文件设备问题

    我正在尝试从 Firebase 存储下载 Word 文档 在模拟器上一切都按预期工作 然而在我的设备上 我收到以下错误 可选 错误域 FIRStorageErrorDomain代码 13000 发生未知错误 请检查服务器响应 UserInf