Upload --> Stream --> ByteArray (Apache FileUpload API)

Chimaira

Erfahrenes Mitglied
Hoi Leute,

ich habe ein Problem. Also ein Dateiupload per JSP und Servlet --> doPost hat funktioniert und die Datei wurde auch in einem Verzeichnis abgelegt. Ich soll das ganze jedoch per Streaming API (Apache Commons) in ein ByteArray schreiben. Wie kann ich denn überprüfen ob es geklappt hat?

Mein Code:

PHP:
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.fileupload.FileItemIterator;
import org.apache.commons.fileupload.FileItemStream;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.apache.commons.fileupload.util.Streams;


 public class UploadServlet extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet {

	private static final long serialVersionUID = 4877829653178576328L;
	private String application;
	private String instance; 
	private String password;
	
	public UploadServlet() {
		super();
	}   	

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

	}
	
	@Override
	protected void doPost(HttpServletRequest request,
	            HttpServletResponse response) throws ServletException, IOException {		
		try {
			response.setContentType("text/html");
			
			PrintWriter out = response.getWriter();
			
			ServletFileUpload servletUpload = new ServletFileUpload();
			
			FileItemIterator iter = servletUpload.getItemIterator(request);
			
			while (iter.hasNext()) {
			    FileItemStream item = iter.next();
			    String name = item.getFieldName();
			    InputStream stream = item.openStream();
			    if (item.isFormField()) {
			        if(name.equals("app")){
			        	this.application = Streams.asString(stream);
			        }else if(name.equals("instance")){
			        	this.instance = Streams.asString(stream);
			        }else if(name.equals("pass")){
			        	this.password = Streams.asString(stream);
			        }
			    } else{
			        ByteArrayOutputStream outByte = new ByteArrayOutputStream();
			        
			        int _tmp = 0;
			        
			        while((_tmp = stream.read()) > 0){
			        	outByte.write(_tmp);
			        }     			       			        
			        
			        byte[] re = outByte.toByteArray();
			        
			        outByte.flush();
			        outByte.close();
			        out.write(re.length);		        			     
			    }
			}
//			out.write(getHTMLString(true));
		} catch (FileUploadException e) {
			e.printStackTrace();
		}
	}

Durch
PHP:
out.write(re.length);
habe ich versucht die Länge des BYteArrays auszugeben. Aber im Browser zeigt er mir nur ein kästchen an [].

Kann mir da jemand helfen?

Greeze Chimaira
 

Neue Beiträge

Zurück