版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
要实现使用生成的临时下载URL在下载时强制下载,并且文件名显示为您设置的值而非存储的原文件名,您可以按照以下步骤操作:
通过预签名URL设置单次访问为强制下载及自定义文件名:
response-content-disposition参数来指定用户下载时显示的文件名。例如:GeneratePresignedUrlRequest request = new GeneratePresignedUrlRequest(bucketName, objectName, HttpMethod.GET);
// 设置强制下载和自定义文件名
request.setResponseHeaders(new HashMap<String, String>(){{
put("response-content-disposition", "attachment; filename=" + URLEncoder.encode("您希望显示的文件名", "UTF-8"));
}});
Date expiration = new Date(System.currentTimeMillis() + 3600 * 1000); // URL有效期1小时,按需调整
URL signedUrl = ossClient.generatePresignedUrl(request, expiration);
signedUrl给用户,当用户通过此链接访问时,浏览器将提示保存文件,并使用您设定的文件名。通过文件元数据设置所有访问为强制下载及自定义文件名:
Content-Disposition字段设置为attachment; filename="您希望显示的文件名"。结合上述方法,您可以确保用户通过临时下载URL访问文件时,不仅能够强制下载,而且文件名会是您预先设定的值,而非OSS中实际存储的文件名。