JAVA配合Bootstrap前端实现阿里云OSS下载

在我们开发OA系统或者其他管理系统中,经常用到下载文件的功能,尤其是在aliyun oss上存储的文件,那么如何下载呢?

不多说,直接上代码给各位老板。

前端 Bootstrap基本写法,其实特简单:

<div class="form-group">
    <label class="col-md-3 control-label">下载文件</label>
    <div class="col-md-9">
        <a id="apkUrl" style="margin-right: 50px;" href="javascript:void(0);"></a>
    </div>
</div>

js代码:

$(function () {
    $("#apkUrl").attr("onclick", "").click(function () {
        downFileUrl([[${flowCashpack.sdkurl}]]);
    });
    function downFileUrl(fileUrl) {
        window.location.href = "/market/downFile?fileUrl=" + fileUrl;
    }
})

好了,前端代码上完了,下面请欣赏java后端代码:

@RequestMapping(value = "/downFile")
@ResponseBody
public void downFile(HttpServletRequest request, HttpServletResponse response, String fileUrl) throws IOException {
    AliyunOSSUtil.downFile(request, response, fileUrl);
}
那么AliyunOSSUtil工具类内容为:
public static void downFile(HttpServletRequest request, HttpServletResponse response, String fileUrl) {
    response.reset();// 清空输出流
    OutputStream out = null;

    String fileName = fileUrl.substring(fileUrl.lastIndexOf("/") + 1,             fileUrl.length());

    // 创建OSSClient实例。     OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);     try {

        request.setCharacterEncoding("UTF-8");         response.setCharacterEncoding("UTF-8");         String filedisplay = System.currentTimeMillis() + "-" + fileName;         response.addHeader("Content-Disposition", "attachment;filename="                 + filedisplay);         if (request.getHeader("USER-AGENT").toLowerCase()                 .indexOf("firefox") > 0 ? false : true) {             filedisplay = "attachment;filename="                     + URLEncoder.encode(filedisplay, "UTF-8");         } else {             filedisplay = "attachment;filename="                     + new String(filedisplay.getBytes(), "ISO-8859-1");         }         response.setContentType("application/x-msdownload;charset=UTF-8");         response.setHeader("Content-Disposition", filedisplay);         response.addHeader("Pargam", "no-cache");         response.addHeader("Cache-Control", "no-cache");

        // 设置URL过期时间为1小时         Date expiration = new Date(System.currentTimeMillis() + 3600 * 1000);         GeneratePresignedUrlRequest generatePresignedUrlRequest;         generatePresignedUrlRequest = new GeneratePresignedUrlRequest(bucketName, fileUrl);         generatePresignedUrlRequest.setExpiration(expiration);         URL url = ossClient.generatePresignedUrl(generatePresignedUrlRequest);

        HttpURLConnection conn = (HttpURLConnection) url.openConnection();         conn.setRequestMethod("GET");         conn.setConnectTimeout(5 * 1000);         InputStream inStream = conn.getInputStream();// 通过输入流获取数据         out = response.getOutputStream();         byte[] buffer = new byte[1024];         int len = 0;         while ((len = inStream.read(buffer)) != -1) {             out.write(buffer, 0, len);         }         inStream.close();         out.flush();         out.close();     } catch (Exception e) {         e.printStackTrace();     }     // 关闭OSSClient。     ossClient.shutdown(); }

好了,节目基本表演完了,那就请各位看官打赏吧!

宝宝有意思是一个介绍java技术,唯美情感文章,有意思的故事,情书,唯美句子,有意思的博客
一诺千金 » JAVA配合Bootstrap前端实现阿里云OSS下载

提供最优质的文章集合

立即查看 了解详情