try { //根据String形式创建一个URL对象 String filePath = materialProductWorks.getDownloadImageUrl(); URL url = new URL(filePath); //实列一个URLconnection对象,用来读取和写入此 URL 引用的资源 HttpURLConnection conn = (HttpURLConnection)url.openConnection(); //设置请求方式为"GET" conn.setRequestMethod("GET"); //超时响应时间为5秒 conn.setConnectTimeout(5 * 1000); //下载图片重新命名,这行注掉 //String fileName = filePath.substring(filePath.lastIndexOf(File.separator)+1); //获取一个输入流 InputStream is = conn.getInputStream(); // 清空buffer,设置页面不缓存 response.reset(); //使客户端浏览器,区分不同种类的数据,并根据不同的MIME调用浏览器内不同的程序嵌入模块来处理相应的数据 response.setContentType("application/octet-stream"); //设置不同的名称 String ufile = UUID.randomUUID().toString().replace("-", ""); //文件下载,指定默认名 response.addHeader("Content-Disposition", "attachment;filename=" + ufile + ".png"); //一个byte[]数组,一次读取多个字节 byte[] bt = new byte[1000]; //用来接收每次读取的字节个数 int b = 0; OutputStream out = response.getOutputStream(); //循环判断,如果读取的个数b为空了,则is.read()方法返回-1,具体请参考InputStream的read(); while ((b = is.read(bt)) != -1) { //将对象写入到对应的文件中 out.write(bt, 0, b); } //刷新流 out.flush(); //关闭流 out.close(); is.close(); conn.disconnect();} catch (Exception e) { e.printStackTrace();}
时间: 2024-11-09 04:26:31