【问题标题】:Uploading file to storage without extension将文件上传到没有扩展名的存储
【发布时间】:2018-01-11 00:47:02
【问题描述】:

我正在尝试创建一个应用程序,用户可以在其中将文件上传到“墙”。这个想法并不重要。每个文件都作为用户配置文件下的 [fileName : url) 添加到存储和数据库中。由于数据库中字符串的限制,我保留没有扩展名的文件名(不能使用点符号)。上传工作正常,但我在删除时遇到问题。根据用户在应用程序中选择删除的文件,我得到文件名(不带扩展名)。我的删除功能应该从存储中删除文件,但由于缺少扩展名而无法找到文件。 我用这个函数上传数据:

let uploadTask = ref.putData(contents as Data, metadata: myMetadata, completion: { (metadata, error) in ...}

和文件本身:

let contents = try Data(contentsOf: url.standardizedFileURL)

是否可以在没有扩展名的情况下上传“内容”?或者也许我还缺少另一种方法?

感谢您的提示。

【问题讨论】:

  • 你能用“.”代替吗将 url 存储为字符串时使用另一个符号的符号,然后在调用删除函数时将其换出?像“|”或者其他的东西?如果用户试图删除“image|jpg”,你只需交换 |为一个 。并删除“image.jpg”?
  • 感谢您的回复!这是我现在唯一的解决方案。然而,这意味着在应用程序中用户会看到不合适的“test|jpg”。这就是为什么我试图找到不同的解决方案。
  • 根据您向用户呈现内容的方式,您可以设置一个“翻译器”——例如,如果|| 代表.,则调用此“翻译器”来呈现其中一个到用户/ URL。 (并且由于一段时间的“URL编码”是%2E,也许可以做到这一点?)

标签: swift firebase firebase-realtime-database firebase-storage


【解决方案1】:

将随机事物(包括文件)的名称作为键存储在实时数据库中并不是一个好主意。您可以通过在数据库中的某个位置为每个上传的文件推送一个对象来让自己更轻松。推送的对象可以包含存储中文件的名称和位置,以及有关该文件的任何其他元数据,只要这些数据存储在值而不是键中,您就不必破坏这些数据。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-12-02
    • 2019-06-19
    • 2019-07-07
    • 1970-01-01
    • 2016-10-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多