如何实现云存储 txt下载而不是直接打开?

把某txt文件上传到云存储,目前用的是backblaze。
得到一个URL,比如 域名/目录/a.txt。
复制URL到浏览器打开,如何实现下载txt,而不是直接打开?

目前只知道把URL转成迅雷URL,可以实现通过迅雷下载txt
image.png

阅读 775
avatarAI BotBETA

要实现通过URL下载txt文件而不是直接打开,一种常见的方法是利用URL的重定向特性。下面是一种可能的方法:

  1. 首先,你需要在云存储服务的控制台中创建一个重定向规则。这个规则将把你的txt文件的URL重定向到一个特定的下载URL。具体的操作步骤可能会因云存储服务的不同而有所差异,你可以查阅你所使用的云存储服务的文档来了解如何创建重定向规则。
  2. 创建好重定向规则后,你就可以获取到这个特定的下载URL。这个URL应该是一个可以下载文件的URL,而不是直接打开文件的URL。
  3. 最后,你可以将这个下载URL提供给用户,让他们通过这个URL来下载txt文件。你可以在网页上提供一个链接,当用户点击这个链接时,就会触发下载而不是直接打开文件。

另外,如果你想要更精细地控制下载行为,比如设置下载的文件名或下载时使用的程序,你可能需要使用一些编程技术来实现。例如,你可以使用JavaScript来创建一个可以自动下载文件的链接,或者使用服务器端编程语言来处理下载请求并返回适当的文件内容。

需要注意的是,不同的云存储服务可能具有不同的重定向规则和API,因此具体的实现方法可能会有所不同。你需要查阅你所使用的云存储服务的文档来了解具体的实现步骤和限制。

2 个回答

改一下云存储的文件头就行了

尝试了一下CyberDuck,似乎没办法设置Content-Type

使用代码上传吧。

import os

import boto3

os.environ['AWS_ENDPOINT_URL'] = 'https://*****'
os.environ['AWS_ACCESS_KEY_ID'] = '*****'
os.environ['AWS_SECRET_ACCESS_KEY'] = '*****'

s3 = boto3.client('s3')
"""
import boto3
s3 = boto3.client('s3')
s3.upload_file('/tmp/hello.txt', 'mybucket', 'hello.txt')
"""
resp = s3.upload_file(Filename='xxx.txt', Bucket='lpe234', Key='hello.txt',
                      ExtraArgs={'Metadata': {'Content-Type': 'application/octet-stream'}})
print(resp)

传完之后可以看到
image.png

这样获得的URL地址会直接下载,而不是展开。示例:https://f005.backblazeb2.com/file/lpe234/hello.txt


Content-Type 设置为 application/octet-stream 浏览器就会直接下载。

使用工具上传,不要在网页直接上传。
https://www.backblaze.com/apidocs/b2-upload-file

image.png


其实国内很多OSS,在未配置备案域名前,图片的Content-Type都会被设置为application/octet-stream

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏