2012-04-25 2 views
0

привет, я пробовал следующие java-коды, которые отлично работают, если я использую их как приложение java, но когда я использую тот же код на моей странице сервлета, они не работают, значит, я не могу загрузить файлы. Пожалуйста, представьте, какие изменения следует сделать, чтобы я мог загрузить файл с помощью Servlets.Загрузка файлов с использованием сервлетов

a.

java.io.BufferedInputStream in = new java.io.BufferedInputStream(new java.net.URL("http://169.254.174.150:8084/WebApplication1/files/check.txt").openStream()); 
    File f1 = new File("D:\\a.txt"); 
    java.io.FileOutputStream fos = new java.io.FileOutputStream(f1); 
    java.io.BufferedOutputStream bout = new BufferedOutputStream(fos, 1024); 
    byte data[] = new byte[1024]; 
    while (in.read(data, 0, 1024) >= 0) { 
     bout.write(data); 
    } 
    bout.close(); 
    in.close(); 
} 

b. http://www.javabeat.net/examples/2012/04/13/download-file-from-http-https-server-using-java/

ответ

0

Один из старших примеров JavaBeat, как вы указали, можно найти here

я тоже нашел другие решения, но это, кажется, наиболее полным.

0

Пара вещей, вставляя их в файл, попробуйте направить данные непосредственно в ответ. Перед записью данных вы должны установить следующие параметры в Быстродействие

 //byte[] filedata = ; intialize your file contents 
     String filename = "a.txt"; 

     //  set the header information in the response. 
     res.setHeader("Content-Disposition", "attachment; filename=\"" + filename + "\";"); 
     res.setContentType("application/x-unknown"); 
     ByteArrayInputStream byteStream = new ByteArrayInputStream(filedata); 
     BufferedInputStream bufStream = new BufferedInputStream(byteStream); 
     ServletOutputStream responseOutputStream = res.getOutputStream(); 
     int data = bufStream.read(); 
     while (data != -1) 
     { 
      responseOutputStream.write(data); 
      data = bufStream.read(); 
     } 

     bufStream.close(); 
     responseOutputStream.close(); 

где Рез является объектом HttpServletResponse. После этого вы можете записать данные в responseOutputStream.

Смежные вопросы