[Switch] Java various file download processing

 

public HttpServletResponse download(String path,
			HttpServletResponse response) {
		try {
			// path is the path of the file to be downloaded.
			File file = new File(path);
			// Get the filename.
			String filename = file.getName();
			// Get the file extension.
			String ext = filename.substring(filename.lastIndexOf(".") + 1)
					.toUpperCase();
			// Download the file as a stream.
			InputStream fis = new BufferedInputStream(new FileInputStream(path));
			byte[] buffer = new byte[fis.available()];
			fis.read(buffer);
			fis.close();
			// clear the response
			response.reset();
			// Set the Header of the response
			response.addHeader("Content-Disposition", "attachment;filename="
					+ new String(filename.getBytes()));
			response.addHeader("Content-Length", "" + file.length());
			OutputStream toClient = new BufferedOutputStream(response
					.getOutputStream());
			response.setContentType("application/octet-stream");
			toClient.write(buffer);
			toClient.flush();
			toClient.close();
		} catch (IOException ex) {
			ex.printStackTrace();
		}
		return response;
	}

	public void downloadLocal(HttpServletResponse response)
			throws FileNotFoundException {
		// download local file
		String fileName = "Operator.doc".toString(); // Default save name of the file
		// read into the stream
		InputStream inStream = new FileInputStream("c:/Operator.doc");// File storage path
		// set the format of the output
		response.reset();
		response.setContentType("bin");
		response.addHeader("Content-Disposition", "attachment; filename=\""
				+ fileName + "\"");
		// loop through the data from the stream
		byte[] b = new byte[100];
		int len;
		try {
			while ((len = inStream.read(b)) > 0)
				response.getOutputStream().write(b, 0, len);
			inStream.close();
		} catch (IOException e) {
			e.printStackTrace ();
		}
	}

	public void downloadNet(HttpServletResponse response)
			throws MalformedURLException {
		// download network file
		int bytesum = 0;
		int byteread = 0;
		URL url = new URL("windine.blogdriver.com/logo.gif");
		try {
			URLConnection conn = url.openConnection();
			InputStream inStream = conn.getInputStream();
			FileOutputStream fs = new FileOutputStream("c:/abc.gif");
			byte[] buffer = new byte[1204];
			int length;
			while ((byteread = inStream.read(buffer)) != -1) {
				bytesum + = byteread;
				System.out.println(bytesum);
				fs.write(buffer, 0, byteread);
			}
		} catch (FileNotFoundException e) {
			e.printStackTrace ();
		} catch (IOException e) {
			e.printStackTrace ();
		}
	}

	// A way to support opening files online
	public void downLoad(String filePath, HttpServletResponse response,
			boolean isOnLine) throws Exception {
		File f = new File(filePath);
		if (!f.exists()) {
			response.sendError(404, "File not found!");
			return;
		}
		BufferedInputStream br = new BufferedInputStream(new FileInputStream(f));
		byte[] buf = new byte[1024];
		int len ​​= 0;
		response.reset(); // very important
		if (isOnLine) { // online open mode
			URL u = new URL("file:///" + filePath);
			response.setContentType(u.openConnection().getContentType());
			response.setHeader("Content-Disposition", "inline; filename="
					+ f.getName());
			// filename should be encoded as UTF-8
		} else { // pure download method
			response.setContentType("application/x-msdownload");
			response.setHeader("Content-Disposition", "attachment; filename="
					+ f.getName());
		}
		OutputStream out = response.getOutputStream();
		while ((len = br.read(buf)) > 0)
			out.write(buf, 0, len);
		br.close();
		out.close();
	}

 

Reprinted: http://jingyemingyue.iteye.com/blog/1172179

 

Guess you like

Origin http://10.200.1.11:23101/article/api/json?id=326618172&siteId=291194637