开发者社区 > 云存储 > 对象存储OSS > 正文

oss如何在下载时使用原文件名

为了避免重名,前端在上传时文件名使用了object_key,并设置headers中的【Content-Type】与【Content-Disposition】来保留原文件名与文件类型,但使用object_key来下载时,只正确还原了【Content-Type】文件类型,而文件名变成了object_key。 下载时代码如下 Oss.signatureUrl(object_key, { response: { 'content-disposition': 'attachment' } }) 请问有什么方法可以让下载的时候文件保留原文件名?

展开
收起
1311646590696968 2023-05-16 17:17:57 1432 0
5 条回答
写回答
取消 提交回答
  • 值得去的地方都没有捷径

    可以尝试在下载时使用response-content-disposition参数来指定文件名,例如:

    Oss.signatureUrl(object_key, { response: { 'content-disposition': 'attachment;filename="原文件名"' } }) 其中,将"原文件名"替换为实际的文件名即可。这样在下载时,浏览器会将文件保存为指定的文件名。

    2023-05-23 15:30:05
    赞同 展开评论 打赏
  • 公众号:网络技术联盟站,InfoQ签约作者,阿里云社区签约作者,华为云 云享专家,BOSS直聘 创作王者,腾讯课堂创作领航员,博客+论坛:https://www.wljslmz.cn,工程师导航:https://www.wljslmz.com

    在阿里云oss下载文件时,可以使用原文件名。您可以在下载链接中添加response-content-disposition参数,并将其设置为attachment;filename=<your_filename>,其中<your_filename>为您要使用的原文件名。

    例如,如果您要下载名为“example.txt”的文件,可以使用以下链接:

    https://<your_bucket>.<your_endpoint>/example.txt?response-content-disposition=attachment;filename=example.txt
    

    其中,<your_bucket>为您的oss存储桶名称,<your_endpoint>为您的oss存储区域的访问域名。

    使用上述链接下载文件时,会将文件保存为“example.txt”,并自动使用浏览器的下载功能进行下载。如果您使用的是命令行工具或者其他下载工具,也可以将链接复制到工具中进行下载。

    需要注意的是,如果文件名中包含了中文或其他特殊字符,需要对文件名进行URL编码,例如:

    https://<your_bucket>.<your_endpoint>/%E4%B8%AD%E6%96%87%E6%96%87%E4%BB%B6.txt?response-content-disposition=attachment;filename=%E4%B8%AD%E6%96%87%E6%96%87%E4%BB%B6.txt
    

    建议在使用时先进行测试,确保能够正确下载文件。

    2023-05-16 18:40:23
    赞同 展开评论 打赏
  • 十年摸盘键,代码未曾试。 今日码示君,谁有上云事。

    oss上的文件是可以直接通过动态创建a标签来下载的,但是下载的文件名是oss给的,在不转成blob类型的前提下更改a.download是无效的

    先把文件转成文件流的形式,再通过动态创建a标签,更改a.download属性来更改文件名

    使用OSS(阿里云开放云存储)存储文件时,为了保证文件的安全性和唯一性,文件名全部sha1加密过了。但是这样的话,当用户下载文件时,文件名会是一堆加密串,如何才能让用户下载文件时是原名方法有两种:

    上传文件至OSS时设置HTTP的Content-Disposition头标志。

    获取文件的下载链接(get_site_url)时设置Content-Disposition标志。

    如果不同用户下载同一个文件时使用不同的文件名上面的就不适用了,要用下面的方法,

    修复阿里云PHP SDK V1.1.5的一个Bug(V2应该没有这个Bug了),sdk.class.php第452行,由get_sign_url时设置Content-Disposition,

    OSS生成的文件,例如压缩包,下载的时候希望是个中文的,方便查看。以下方法可以解决。

    通过修改META信息来定义下载文件名称参考一下链接:

    https://help.aliyun.com/document_detail/84840.html

    2023-05-16 17:35:33
    赞同 2 展开评论 打赏
  • CSDN全栈领域优质创作者,万粉博主;InfoQ签约博主;华为云享专家;华为Iot专家;亚马逊人工智能自动驾驶(大众组)吉尼斯世界纪录获得者

    在阿里云 OSS 中,如果需要在下载时使用原文件名,可以在上传文件到 OSS 后,对文件进行重命名。具体操作如下:

    1. 登录阿里云控制台,进入 OSS 管理控制台。
    2. 在左侧导航栏中选择“存储空间”,进入存储空间列表页面。
    3. 找到需要修改名称的存储空间,点击其名称进入该存储空间的详细信息页面。
    4. 在详细信息页面中,找到需要修改名称的文件夹或对象,点击其名称进入其详细信息页面。
    5. 在详细信息页面中,找到“名称”字段,并将其修改为新的文件名。
    6. 点击“保存”按钮,完成文件名修改。
    7. 在 OSS 控制台中选择需要下载的文件,右键点击该文件,选择“下载”。
    8. 在弹出的下载对话框中,将“链接类型”设置为“普通链接”,然后输入本地计算机的本地路径即可开始下载。此时下载的文件将会以修改后的文件名保存在本地计算机上。
    2023-05-16 17:25:15
    赞同 展开评论 打赏
  • 可以尝试通过修改Content-Disposition响应头来实现保留原文件名的功能。将Content-Disposition设置为attachment; filename="原文件名"即可在下载时保留原文件名。例如:

    Oss.signatureUrl(object_key, {
      response: {
        'content-disposition': 'attachment; filename="原文件名"'
      }
    })
    

    其中,原文件名为上传文件时的真实文件名。需要确保文件名中没有特殊字符或汉字等不被支持的字符,否则可能会导致下载失败。

    另外需要注意,使用该方法可能会导致浏览器默认打开文件而不是下载。如果需要强制下载,可以添加download属性或在服务端设置Content-Typeapplication/octet-stream

    2023-05-16 17:22:06
    赞同 展开评论 打赏

对象存储 OSS 是一款安全、稳定、高性价比、高性能的云存储服务,可以帮助各行业的客户在互联网应用、大数据分析、机器学习、数据归档等各种使用场景存储任意数量的数据,以及进行任意位置的访问,同时通过丰富的数据处理能力更便捷地使用数据。

相关产品

  • 对象存储
  • 热门讨论

    热门文章

    相关电子书

    更多
    OSS运维进阶实战手册 立即下载
    《OSS运维基础实战手册》 立即下载
    OSS运维基础实战手册 立即下载