Hi Experten,
ich muß auf die schnelle einen File-Upload in eine Oracle DB realisieren. Leider bin ich nicht so fit in Java.
Fragen:
Wie muss die HTML-Seite mit dem File-Select aufgebaut sein?
Wie übergibt man das selectierte File an ein Servlet?
Das einfügen in die DB aus einem InputStrem bekomme ich selber hin…
Ich habe gegoogelt, aber nix so richiges gefunden.
Gibts irgendwo ein HOW-TO? Theoretischer Background…
HIIILLFFEEE!!!
Nic
Bonkers
5. September 2005 um 15:31
2
Hi,
zufällig hatte ich vor kurzem das gl. problem:
realisiert mit der bibbliothek von der apache group „fileupload“ (da gibts glaub ich auch ein beispiel…)
das servlet:
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.Iterator;
import java.util.List;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.sql.DataSource;
import org.apache.commons.fileupload.DiskFileUpload;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUpload;
import org.apache.commons.fileupload.FileUploadException;
public class Upload extends HttpServlet {
private Connection con = null;
private File homeDir; //upload dir
private DBCon dbCon = null;
public Upload() {
super();
}
//Datasource holen / DB init
private void initDB(){
try {
InitialContext jndiCntx = new InitialContext();
DataSource ds = (DataSource)jndiCntx.lookup("java:/MySqlDS");
con = ds.getConnection();
} catch (SQLException e1) {
e1.printStackTrace();
} catch (NamingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void init(ServletConfig config) throws ServletException {
super.init(config);
initDB();
homeDir = new File(System.getProperty("catalina.base")
+ System.getProperty("file.separator") + "uplaodDir"); //Upload Verzeichniss
if (!homeDir.exists())
homeDir.mkdir();
}
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
boolean isMultipart = FileUpload.isMultipartContent(request);
System.out.println("multipart:" + isMultipart);
DiskFileUpload upload = new DiskFileUpload();
PrintWriter pw = response.getWriter();
try {
List items = upload.parseRequest(request);
Iterator iter = items.iterator();
String comment = null, filedest = null;
FileItem fileItem = null;
FileItem item = null;
while (iter.hasNext()) { //init Params
item = (FileItem) iter.next();
System.out.println("isFormField: " + item.isFormField());
if (item.isFormField()) {
System.out.println("getFieldName-param:"
+ item.getFieldName());
System.out.println("getString-value:" + item.getString());
comment = item.getString();
}
//fileitem holen, wenn der übergebene Parameter aus dem JSP kein FormField ist
if (!item.isFormField()) {
filedest = homeDir + System.getProperty("file.separator") + new File(item.getName()).getName();
fileItem = item;
}
}
if (!new File(filedest).exists()){ //existiert das file schon im Verzeichnis? nö, dann upload
InputStream fi;
BufferedInputStream is = new BufferedInputStream(fi = fileItem.getInputStream());
BufferedOutputStream os = new BufferedOutputStream( new FileOutputStream(filedest));
byte[] buff = new byte[8192];
int len;
while (0 ");
pw.println("");
pw.println("");
pw.println("Upload erfolgreich.");
pw.println("[zurück](%255C%2522index.jsp%255C%2522)");
pw.println("");
pw.println("
Uff…
…InputStream - das sieht gut aus, da kann ich meinen EXIF-Killer dazwischen hängen.
Na ja - erst mal durchwühlen…
Danke!
Nic
Bonkers
5. September 2005 um 16:24
4
np, ist viel bei was du so vermutl. nicht brauchst… Datasource und so… sieht nur viel aus. Hier noch der Link mit dem beispiel, die Klassen brauchst du nat. auch von dort:
http://jakarta.apache.org/commons/fileupload/using.html