使用Java通过URL下载图片到本地

2017-03-02  本文已影响0人  Slience无言

转载自http://www.open-open.com/lib/view/open1329995970842.html

需求,公司项目接入融云,对于聊天中上传的图片融云会自动上传到七牛,但是只保留一个月,如果需要将图片长久的保留下来就需要自行下载图片了,前端同事说它可以给我那张图片的URL,类似于这种样子的

http://rongcloud-image.ronghub.com/image_jpeg__RC-2017-03-01_946_1488362231609?e=2147483647&token=EcrrKW5AbOMQaDRwc3ReDNvo3-sL_SO1fSUBKV3H:0VT5Cx7suD6uKNcuqVGsa84mq1M=

实现代码

    public static String uploadQianURL(String fileUrl) {
        //获取文件名,文件名实际上在URL中可以找到
        String fileName = fileUrl.substring(fileUrl.lastIndexOf("/"), fileUrl.indexOf("?")) + ".jpg";
        //这里服务器上要将此图保存的路径
        String savePath = getRequest().getRealPath(UPLOAD_PATH);
        try {
            URL url = new URL(fileUrl);/*将网络资源地址传给,即赋值给url*/
            /*此为联系获得网络资源的固定格式用法,以便后面的in变量获得url截取网络资源的输入流*/
            HttpURLConnection connection = (HttpURLConnection)url.openConnection();
            DataInputStream in = new DataInputStream(connection.getInputStream());
            /*此处也可用BufferedInputStream与BufferedOutputStream*/
            DataOutputStream out = new DataOutputStream(new FileOutputStream(savePath+fileName));
            /*将参数savePath,即将截取的图片的存储在本地地址赋值给out输出流所指定的地址*/
            byte[] buffer = new byte[4096];
            int count = 0;
            /*将输入流以字节的形式读取并写入buffer中*/
            while ((count = in.read(buffer)) > 0) {
                out.write(buffer, 0, count);
            }
            out.close();/*后面三行为关闭输入输出流以及网络资源的固定格式*/
            in.close();
            connection.disconnect();
            //返回内容是保存后的完整的URL
            return PATH+UPLOAD_PATH+fileName;/*网络资源截取并存储本地成功返回true*/

        } catch (Exception e) {
            System.out.println(e + fileUrl + savePath);
            return null;
        }
    }

如果URL路径是.jpg或者.png结尾的只需要在fileName那修改就好

上一篇下一篇

猜你喜欢

热点阅读