Hi folks,
I've seen this discussed quite a few times, and I went and looked at the archives, but I haven't seen a full description of uploading files into the database. These are the issues that I see: 1. Servlets don't really support handling of "multipart"/upload. Not only does it mean that you need to use a third party solution like Jason Hunter's com.oreilly.servlet (cos.jar), http://www.servlets.com/cos/index.html. It gets even worse. You can't just use this library for the uploads and handle your other variables/params normally. The servlet won't even see your params. I suspect it's probably the nature of the beast and how http://www.ietf.org/rfc/rfc1867.txt sets it up. 2. Once you upload the file you need to insert it into the database. Since we're dealing with large objects, this is not as trivial as inserting normal data types. 3. You also want to keep some information about the mime type, and possibly the original file name of the file that was uploaded. Proposed solution: Jason Hunter has an elegant solution to part of the problem, http://www.javaworld.com/javaworld/jw-06-2001/jw-0622-filters-p4.html He creates a filter that handles multipart/upload part of the request and then passes the rest to the "normal" servlet. This is important for us since it lets us use the request in our standard forms that do a lot of other stuff, such as validation, handling other types with the database, etc. You can see the details at www.zapatec.com. The above filter though creates a file on disk, it doesn't insert the file into the database. One option is to leave things this way, and in the servlet fetch the file and insert it into the db. (As a side note, there could be an architectural decision not to store the files in the database at all, and instead just save them on disk and have a "pointer" from the db to the file on disk). There are a variety of problems with saving the file and then inserting into the db, including dealing with race conditions on the naming, keeping track of disk space, cleanup, etc. For us though, it's not really an option since part of our security model is that we don't let contexts write to disk. I'm thinking of changing the code so that filter inserts a row for each uploaded file into the zp_files table: -- Dror Matalon Zapatec Inc 1700 MLK Way Berkeley, CA 94709 http://www.zapatec.com ___________________________________________________________________________ To unsubscribe, send email to [EMAIL PROTECTED] and include in the body of the message "signoff SERVLET-INTEREST". Archives: http://archives.java.sun.com/archives/servlet-interest.html Resources: http://java.sun.com/products/servlet/external-resources.html LISTSERV Help: http://www.lsoft.com/manuals/user/user.html
