【问题标题】:How to download file with changed filename?如何下载更改文件名的文件?
【发布时间】:2016-05-01 19:30:18
【问题描述】:

让我们考虑这种情况:

  • 我有一张图片,其中包含吉他等内容
  • 它的名字是吉他.png
  • 上传后将名称更改为随机字符串,例如 kouyyvrmbubwkrh7ayvk.png
  • 现在我想要一个指向此文件的链接,但单击它应该会下载更改名称的文件,例如。 “my-custom-attachment.png”之类的

现在我使用带有 angular 属性的简单 <a>...</a>

<a ng-href="{{ vm.resource.attachment_url }}"> Download attachment </a>

vm.resource.attachment_url 显然是使用内部 API 获取的对象

我无法在 Cloudinary API 中找到这样的实现。另外,我希望我足够清楚。

【问题讨论】:

标签: ruby-on-rails angularjs cloudinary


【解决方案1】:

Cloudinary 支持将图像作为附件传送,强制其下载并使用原始文件名存储。
只需将 fl_attachment 添加到 URL,或在使用辅助方法时将 flags 参数设置为 attachment 即可完成,例如:
cloudinary.url('kouyyvrmbubwkrh7ayvk.png', {flags: 'attachment'}); 在您的特定情况下,这将导致图像被保存为 guitar.png

更多信息:http://support.cloudinary.com/hc/en-us/articles/202521252-How-can-I-deliver-an-image-as-an-attachment-

【讨论】:

    【解决方案2】:

    使用锚点的downloadattribute,指定接收下载文件的名称:

    <a ng-href="{{ vm.resource.attachment_url }}" download="my-custom-attachment.png"> Download attachment </a>
    

    查看the demo 属性的工作原理。

    另一种选择是将文件内容下载到 Blob 对象中,然后使用修改后的文件名抛出 Blob 内容。检查demo

    【讨论】:

    • 看起来不错,但它只适用于本地文件。我需要从 cloudinary 中获取文件并更改名称,在这种情况下 download 属性不起作用
    • @blisher 你对本地文件意味着什么?它确实会下载远程文件并根据download 属性值更改名称。
    • 如果在演示中将href 属性更改为http://lorempixel.com/g/400/200/,它将不再起作用
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-15
    • 1970-01-01
    相关资源
    最近更新 更多