B
bernds
Gast
Hallo,
stecke noch in den Anfängen und daher poste ich mal hier. Ich habe mit Eclipse eine Anwendung erstellt, mittels welcher ich eine Datei auf einen Server hochladen will und gleichzeitig einen entsprechenden Datenbankeintrag machen möchte.
Nun bekomm ich beim Upload der Datei in der Eclipse-Console die im Titel angegebene Fehlermeldung.
Die Anwendung besteht aus zwei Teilen, der wingS Applikation und einem Servlet, welches hieraus aufgerufen wird.
wingS:
Servlet
stecke noch in den Anfängen und daher poste ich mal hier. Ich habe mit Eclipse eine Anwendung erstellt, mittels welcher ich eine Datei auf einen Server hochladen will und gleichzeitig einen entsprechenden Datenbankeintrag machen möchte.
Nun bekomm ich beim Upload der Datei in der Eclipse-Console die im Titel angegebene Fehlermeldung.
Die Anwendung besteht aus zwei Teilen, der wingS Applikation und einem Servlet, welches hieraus aufgerufen wird.
wingS:
Code:
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.FileInputStream;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLConnection;
import org.wings.SButton;
import org.wings.SContainer;
import org.wings.SDimension;
import org.wings.SFileChooser;
import org.wings.SFileIcon;
import org.wings.SFont;
import org.wings.SForm;
import org.wings.SFrame;
import org.wings.SGridLayout;
import org.wings.SLabel;
import org.wings.SPanel;
import org.wings.session.Session;
import org.wings.session.SessionManager;
public class emclFileUpload {
// Elemente bauen
SForm form = new SForm();
SContainer container = new SContainer(new SGridLayout(2,1));
SLabel uploadLabel1 = new SLabel("Bitte Datei Auswählen:");
SGridLayout gridLayout = new SGridLayout(3,1);
SGridLayout gridLayout2 = new SGridLayout(1,2);
SPanel browse = new SPanel(gridLayout);
SPanel anzeige = new SPanel(gridLayout2);
SLabel enter = new SLabel("Es wurde Enter gedrückt!");
SLabel but = new SLabel("Es wurde der Button angeklickt");
SLabel size = new SLabel();
SLabel pbmax = new SLabel();
public emclFileUpload(){
// Seite gestalten und Komponenten hinzufügen
container.setPreferredSize(new SDimension("20%", null));
uploadLabel1.setFont(new SFont(SFont.BOLD + SFont.ITALIC));
final SFileChooser chooser = new SFileChooser();
final SButton button = new SButton("hochladen");
gridLayout.setBorder(2);
gridLayout.setHgap(20);
gridLayout.setVgap(40);
gridLayout.setPreferredSize(new SDimension("50%", null));
gridLayout2.setBorder(1);
gridLayout2.setHgap(20);
gridLayout2.setVgap(40);
gridLayout2.setPreferredSize(new SDimension("50%", null));
form.add(container);
container.add(browse);
container.add(anzeige);
browse.add(uploadLabel1);
browse.add(chooser);
browse.add(button);
// Setzten der maximalen Dateigröße für den Upload
Session session = SessionManager.getSession();
session.setMaxContentLength(16384);
ActionListener upl = new ActionListener() {
public void actionPerformed(ActionEvent e) {
try {
File file = chooser.getFile();
URLConnection urlConnection = new URL("http://localhost:8080/upload/uploadServlet?fileName="+chooser.getFileName()+"&pk_ob=111111&pk_ma=111&anlus=1111111&anda=01.01.1900&pk_kd=").openConnection();
urlConnection.setDoOutput(true);
((HttpURLConnection) urlConnection).setRequestMethod("PUT");
OutputStream outputStream = urlConnection.getOutputStream();
FileInputStream fileInputStream = new FileInputStream(file);
byte[] buffer = new byte[2048];
int bytesRead = 0;
while ((bytesRead = fileInputStream.read(buffer)) > 0) {
outputStream.write(buffer, 0, bytesRead);
outputStream.flush();
}
// Streams schließen
fileInputStream.close();
outputStream.close();
System.out.println(((HttpURLConnection) urlConnection)
.getResponseCode());
// Anzeige der Dateiattribute und der Vorschau
SLabel iconlabel = new SLabel();
iconlabel.setIcon(new SFileIcon(chooser.getFile(), null, chooser.getFileType()));
SLabel dName = new SLabel(chooser.getFileName());
SLabel dNameB = new SLabel("Dateiname:");
dNameB.setFont(new SFont(SFont.BOLD + SFont.ITALIC));
SLabel dID = new SLabel(chooser.getFileId());
SLabel dIDB = new SLabel("Datei-ID:");
dIDB.setFont(new SFont(SFont.BOLD + SFont.ITALIC));
SLabel dDir = new SLabel(chooser.getFileDir());
SLabel dDirB = new SLabel("Dateipfad:");
dDirB.setFont(new SFont(SFont.BOLD + SFont.ITALIC));
SLabel dType = new SLabel(chooser.getFileType());
SLabel dTypeB = new SLabel("Dateityp:");
dTypeB.setFont(new SFont(SFont.BOLD + SFont.ITALIC));
SLabel dPrev = new SLabel("Vorschau:");
dPrev.setFont(new SFont(SFont.BOLD + SFont.ITALIC));
anzeige.removeAll();
anzeige.add(pbmax);
anzeige.add(size);
anzeige.add(dNameB);
anzeige.add(dName);
anzeige.add(dIDB);
anzeige.add(dID);
anzeige.add(dDirB);
anzeige.add(dDir);
anzeige.add(dTypeB);
anzeige.add(dType);
anzeige.add(dPrev);
anzeige.add(iconlabel, "ICON");
}
catch (Exception ioe){System.out.println(ioe);}
}
};
form.addActionListener(upl);
SFrame rootFrame = new SFrame("Datei hochladen...");
rootFrame.getContentPane().add(form);
rootFrame.setVisible(true);
}
}
Servlet
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class uploadServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doPut(
HttpServletRequest request,
HttpServletResponse response) throws ServletException{
try {
Connection con = emclDB.getConnection();
InputStream inputStream = request.getInputStream();
final String pk_ob = request.getParameter("pk_ob");
final String pk_kd = request.getParameter("pk_kd");
final String pk_ma = request.getParameter("pk_ma");
final String anlus = request.getParameter("anlus");
final String anda = request.getParameter("anda");
final String fileName = request.getParameter("fileName");
if (pk_ob.equals("")) {
File dir = new File("c:/tmp/"+pk_kd+"/");
dir.mkdir();
FileOutputStream fileOutputStreamkd = new FileOutputStream("c:/tmp/"+pk_kd+"/"+fileName);
byte[] buffer = new byte[2048];
int len = 0;
while ((len = inputStream.read(buffer)) > 0) {
fileOutputStreamkd.write(buffer, 0, len);
System.out.println("Testausgabe");
fileOutputStreamkd.flush();
System.out.println("Testausgabe");
fileOutputStreamkd.close();
System.out.println("Testausgabe");
}} else {
File dir = new File("c:/tmp2/"+pk_ob+"/");
dir.mkdir();
FileOutputStream fileOutputStreamobj = new FileOutputStream("c:/tmp2/"+pk_ob+"/"+fileName);
byte[] buffer = new byte[2048];
int len = 0;
while ((len = inputStream.read(buffer)) > 0) {
fileOutputStreamobj.write(buffer, 0, len);
System.out.println("Hallo1");
fileOutputStreamobj.flush();
System.out.println("Hallo2");
fileOutputStreamobj.close();
System.out.println("Hallo3");
}
}
try {
System.out.println("Hallo4");
con.setAutoCommit(false);
Statement statement = con.createStatement();
String uploadSQLobj = "insert into objekt_anlagen (pk_objekt, pk_mandant, dateiname, anlageuser, anlagedatum) values ("+pk_ob+","+pk_ma+",'"+fileName+"',"+anlus+",'"+anda+"')";
String uploadSQLkd = "insert into kunde_anlagen (pk_objekt, pk_mandant, dateiname, anlageuser, anlagedatum) values ("+pk_kd+","+pk_ma+",'"+fileName+"',"+anlus+",'"+anda+"')";
if (pk_ob.equals("")) {
System.out.println(uploadSQLkd);
statement.execute(uploadSQLkd);
con.commit();
con.close();
} else {
System.out.println(uploadSQLobj);
statement.execute(uploadSQLobj);
System.out.println(uploadSQLobj);
con.commit();
con.close();
}
} catch (SQLException sqle)
{
con.rollback();
con.close();
System.out.println(sqle);
}
}
catch (SQLException sqle){System.out.println(sqle);}
catch (IOException ioe){System.out.println(ioe);}
}
}
Das ganze läuft auf einem lokalen Tomcat Server. Kann mir da jemand helfen?