Upload für dummys

Hi Experten,

ich muß auf die schnelle einen File-Upload in eine Oracle DB realisieren. Leider bin ich nicht so fit in Java.

Fragen:

  1. Wie muss die HTML-Seite mit dem File-Select aufgebaut sein?
  2. 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

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

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