Cool
Cool
Published on 2021-05-16 / 21 Visits
0
0

tomcat 下载图片到服务器

效果

Servet代码

package com.liang;

import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.net.HttpURLConnection;
import java.net.URL;

@WebServlet("/imgservlet")
public class ImgServlet extends HttpServlet {
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        request.setCharacterEncoding("UTF-8");
        response.setContentType("text/html;charset=utf-8");
        //前端传入的name值
        String url = request.getParameter("filename");
        long startTime = System.currentTimeMillis();
        URL imgURL = new URL(url.trim());//转换URL

        HttpURLConnection urlConn = (HttpURLConnection) imgURL.openConnection();//构造连接

        urlConn.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.79 Safari/537.36");
        urlConn.connect();
        System.out.println(CatchIMG.class.toString() + ":获取连接=" + urlConn.getResponseMessage());
        if (urlConn.getResponseCode() == 200) {//返回的状态码是200 表示成功
            InputStream ins = urlConn.getInputStream(); //获取输入流,从网站读取数据到 内存中


            //获取写入tomcat服务器资源下的路径
            ServletContext servletContext = this.getServletContext();
            //realPath是服务器路径
            String realPath = servletContext.getRealPath("/img/");

            String filename = String.valueOf(System.currentTimeMillis());
            OutputStream out = new BufferedOutputStream(new FileOutputStream(new File(realPath+filename + ".jpg")));
            int len = 0;
            byte[] buff = new byte[1024 * 10];//10k缓冲流 视你内存大小而定咯

            while (-1 != (len = (new BufferedInputStream(ins)).read(buff))) {//长度保存到len,内容放入到 buff
                out.write(buff, 0, len);//将图片数组内容写入到图片文件
//				System.out.println(CatchIMG.class.toString()+":"+len+"byte已经写入到文件中,内容:  "+new String(buff));
            }
            urlConn.disconnect();
            ins.close();
            out.close();
            System.out.println(CatchIMG.class.toString() + ":获取图片完成,耗时=" + ((System.currentTimeMillis() - startTime) / 1000) + "s");
        }



    }

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doPost(request, response);
    }
}


Comment