通過url從圖片服務(wù)器下載圖片到瀏覽器(圖片下載)下載圖片而不是打開圖片

一、需求:平時(shí)寫圖片下載功能,只需要前臺(tái)頁(yè)面寫download標(biāo)簽就可以實(shí)現(xiàn)圖片的下載,本次項(xiàng)目遇到的問題是,由于搭建了圖片服務(wù)器,請(qǐng)求圖片URL的時(shí)候獲取不到請(qǐng)求頭,瀏覽器無(wú)法識(shí)別圖片是文件,導(dǎo)致點(diǎn)擊下載,瀏覽器會(huì)打開圖片.
二、解決:既然瀏覽器獲取不到請(qǐng)求頭,考慮到的最簡(jiǎn)單的解決方式是通過后臺(tái)下載,向圖片服務(wù)器發(fā)送請(qǐng)求頭.

考慮到下載圖片使用頻繁,所以把下載圖片封裝為通用方法,代碼如下:

實(shí)現(xiàn)步驟:
1.前臺(tái)向后臺(tái)發(fā)送圖片url
2.通過url獲取圖片流
3.設(shè)置輸出頭
4.把圖片輸出到瀏覽器(不是寫死圖片地址)

/**
     * 圖片下載
     * @param fileUrl
     * @param response
     */
    @ApiOperation(value = "|uploadQianURL|圖片下載")
    @GetMapping("/uploadQianURL")
    public void  uploadQianURL(String fileUrl,HttpServletResponse response) {

        fileUrl = fileUrl.replace("\\", "/");
        //獲取文件名,文件名實(shí)際上在URL中可以找到
        String[] strs=fileUrl.split("/");
        String fileName = strs[strs.length - 1].toString();
        try {
            URL url = new URL(fileUrl);/*將網(wǎng)絡(luò)資源地址傳給,即賦值給url*/
            /*此為聯(lián)系獲得網(wǎng)絡(luò)資源的固定格式用法,以便后面的in變量獲得url截取網(wǎng)絡(luò)資源的輸入流*/
            HttpURLConnection connection = (HttpURLConnection)url.openConnection();
            DataInputStream in = new DataInputStream(connection.getInputStream());
            ServletOutputStream out=response.getOutputStream();
            response.setContentType("multipart/form-data");
            //獲取當(dāng)前超鏈接中文件的名字
            response.addHeader("Content-Disposition","attachment; filename="+ new String(fileName.getBytes("GB2312"), "ISO8859-1"));

            ByteArrayOutputStream output = new ByteArrayOutputStream();

            byte[] buffer = new byte[1024];
            int length;

            while ((length = in.read(buffer)) > 0) {
                output.write(buffer, 0, length);
            }
            byte[] context=output.toByteArray();
            out.write(output.toByteArray());
            in.close();
            out.close();
            connection.disconnect();
        } catch (Exception e) {


        }
    }
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容