您的位置:首页 > 其它

oss阿里云上传文件设置下载文件名

2017-12-05 23:06 1711 查看
今天用oss阿里云完成上传文件操作时遇到一个问题,文件上传到阿里云服务器上后会返回一个url路径,但是通过url路径下载得到是md5加密后的文件名

后查阿里云的sdk文档发现可以通过设置请求头的方式来设置下载文件名:

具体代码如下:

看的时候一定要仔细!!!!!!!!!

//
endpoint以杭州为例,其它region请按实际情况填写


String
endpoint =
"http://oss-cn-hangzhou.aliyuncs.com";


//
云账号AccessKey有所有API访问权限,建议遵循阿里云安全最佳实践,创建并使用RAM子账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建


String
accessKeyId =
"<yourAccessKeyId>";


String
accessKeySecret =
"<yourAccessKeySecret>";


String
content =
"Hello OSS";




//
创建上传Object的Metadata


ObjectMetadata
meta =
new
ObjectMetadata();




//
设置上传文件长度


meta.setContentLength(content.length());


//
设置上传MD5校验


String
md5 =
BinaryUtil.toBase64String(BinaryUtil.calculateMd5(content.getBytes()));


meta.setContentMD5(md5);


//
设置上传内容类型


meta.setContentType("text/plain");

==============================================
解决问题的核心:
//获取原文件名
String filename = file.getOriginalName();

//设置文件上传时的请求头信息,这样上传返回文件存储的url路径,我们通过url路径直接下载就可以得到源文件名而不是加密的随机码。
meta.setContentDisposition("attachment;filename=\""+filename+"\"");

==============================================



//
创建OSSClient实例


OSSClient
ossClient =
new
OSSClient(endpoint,
accessKeyId,
accessKeySecret);




//
上传文件


ossClient.putObject("<yourBucketName>",
"<yourKey>",
new
ByteArrayInputStream(content.getBytes()),
meta);




//
关闭client


ossClient.shutdown();
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: