//流输出文件 public static void getFileFromOss(String fullUrl, HttpServletRequest request,HttpServletResponse response) { URL url = null; OutputStream os = null; try { url = new URL(fullUrl); HttpURLConnection conn = (HttpURLConnection)url.openConnection(); conn.setRequestMethod("GET"); conn.setConnectTimeout(5 * 1000); //设置用户代理(防止屏蔽程序抓取而返回403错误) conn.setRequestProperty("User-Agent","Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)"); //通过输入流获取图片数据 InputStream inStream = conn.getInputStream(); byte [] data = readInputStream(inStream); setFileName(request,response,"test.doc"); os = response.getOutputStream(); os.write(data); os.flush(); } catch (Exception ex) { ex.printStackTrace(); } finally { try{ os.close(); }catch (IOException ex){ System.out.println("123"); }catch (NullPointerException e) { System.out.println("123"); } } }
/** * 从输入流中获取字节数组 * @param inputStream * @return * @throws IOException */ public static byte[] readInputStream(InputStream inputStream) throws IOException { byte [] buffer = new byte[1024]; int len = 0; ByteArrayOutputStream bos = new ByteArrayOutputStream(); while((len = inputStream.read(buffer)) != -1) { bos.write(buffer, 0, len); } bos.close(); return bos.toByteArray(); }