Рубрики
Без рубрики

Как загрузить файл с веб-сайта- Java/Jsp

– Как загрузить файл с веб-сайта- Java/Jsp

Автор оригинала: mkyong.

Вот как простой пример java демонстрирует, как разрешить пользователю загружать файл с веб-сайта. Независимо от того, используете ли вы struts, JSP, Spring или любую другую платформу java, логика одна и та же.

1) Сначала мы должны установить HttpServletResponse ответ , чтобы сообщить браузеру о том, что система собирается вернуть файл приложения вместо обычная html-страница

response.setContentType("application/octet-stream");
response.setHeader("Content-Disposition",
"attachment;filename=downloadfilename.csv");

мы также можем указать имя загружаемого файла в вложение; имя файла= ,

2) Есть 2 способа разрешить пользователю загружать файл с веб-сайта

Чтение файла из физического местоположения

File file = new File("C:\\temp\\downloadfilename.csv");
FileInputStream fileIn = new FileInputStream(file);
ServletOutputStream out = response.getOutputStream();

byte[] outputByte = new byte[4096];
//copy binary contect to output stream
while(fileIn.read(outputByte, 0, 4096) != -1)
{
	out.write(outputByte, 0, 4096);
}
fileIn.close();
out.flush();
out.close();

Экспортируйте данные базы данных или строку непосредственно во входной поток для загрузки пользователем.

StringBuffer sb = new StringBuffer("whatever string you like");
InputStream in = new ByteArrayInputStream(sb.toString().getBytes("UTF-8"));
ServletOutputStream out = response.getOutputStream();

byte[] outputByte = new byte[4096];
//copy binary contect to output stream
while(in.read(outputByte, 0, 4096) != -1)
{
	out.write(outputByte, 0, 4096);
}
in.close();
out.flush();
out.close();

3) Сделано

Вот как мой пример struts демонстрирует, как напрямую записывать данные во входной поток и выводить их как “temp.cvs”, чтобы позволить пользователю загружать.

public ActionForward export(ActionMapping mapping, ActionForm form,
	HttpServletRequest request, HttpServletResponse response)
	throws Exception {
				
	//tell browser program going to return an application file 
        //instead of html page
        response.setContentType("application/octet-stream");
        response.setHeader("Content-Disposition","attachment;filename=temp.csv");
				
	try 
	{
		ServletOutputStream out = response.getOutputStream();
		StringBuffer sb = generateCsvFileBuffer();
					
		InputStream in = 
                    new ByteArrayInputStream(sb.toString().getBytes("UTF-8"));
					
		byte[] outputByte = new byte[4096];
		//copy binary contect to output stream
		while(in.read(outputByte, 0, 4096) != -1)
		{
			out.write(outputByte, 0, 4096);
		}
		in.close();
		out.flush();
		out.close();
					
	  }
	  return null;
	}

private static StringBuffer generateCsvFileBuffer()
{
	StringBuffer writer = new StringBuffer();

	writer.append("DisplayName");
	writer.append(',');
	writer.append("Age");
	writer.append(',');
	writer.append("HandPhone");
	writer.append('\n');

        writer.append("mkyong");
	writer.append(',');
	writer.append("26");
	writer.append(',');
	writer.append("0123456789");
	writer.append('\n');
			
	return writer;
}

Вот пример загрузки файла в коде сервлета

Оригинал: “https://mkyong.com/java/how-to-download-file-from-website-java-jsp/”