Return-Path: Delivered-To: apmail-jakarta-commons-user-archive@www.apache.org Received: (qmail 91491 invoked from network); 7 Apr 2004 18:33:36 -0000 Received: from daedalus.apache.org (HELO mail.apache.org) (208.185.179.12) by minotaur-2.apache.org with SMTP; 7 Apr 2004 18:33:36 -0000 Received: (qmail 74382 invoked by uid 500); 7 Apr 2004 18:33:20 -0000 Delivered-To: apmail-jakarta-commons-user-archive@jakarta.apache.org Received: (qmail 74357 invoked by uid 500); 7 Apr 2004 18:33:20 -0000 Mailing-List: contact commons-user-help@jakarta.apache.org; run by ezmlm Precedence: bulk List-Unsubscribe: List-Subscribe: List-Help: List-Post: List-Id: "Jakarta Commons Users List" Reply-To: "Jakarta Commons Users List" Delivered-To: mailing list commons-user@jakarta.apache.org Received: (qmail 74331 invoked from network); 7 Apr 2004 18:33:19 -0000 Received: from unknown (HELO main.gmane.org) (80.91.224.249) by daedalus.apache.org with SMTP; 7 Apr 2004 18:33:19 -0000 Received: from list by main.gmane.org with local (Exim 3.35 #1 (Debian)) id 1BBHrX-00007y-00 for ; Wed, 07 Apr 2004 20:33:23 +0200 Received: from mailext.informatica.com ([12.108.188.134]) by main.gmane.org with esmtp (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Wed, 07 Apr 2004 20:33:23 +0200 Received: from martinc by mailext.informatica.com with local (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Wed, 07 Apr 2004 20:33:23 +0200 X-Injected-Via-Gmane: http://gmane.org/ To: commons-user@jakarta.apache.org From: "Martin Cooper" Subject: Re: NEWBIE FileUpload question Date: Wed, 7 Apr 2004 11:33:20 -0700 Lines: 100 Message-ID: References: <192D0B4A713A704895EACB84234B62653AA75C@hulk2000.gformula.net> X-Complaints-To: usenet@sea.gmane.org X-Gmane-NNTP-Posting-Host: mailext.informatica.com X-MSMail-Priority: Normal X-Newsreader: Microsoft Outlook Express 6.00.2800.1158 X-MIMEOLE: Produced By Microsoft MimeOLE V6.00.2800.1165 Sender: news X-Spam-Rating: daedalus.apache.org 1.6.2 0/1000/N X-Spam-Rating: minotaur-2.apache.org 1.6.2 0/1000/N I've been thinking about the problems you're having, and it seems to me that you may be using the wrong tools for the job on both ends of the connection. ;-) >From a brief Google around, it seems that (not surprisingly) XMLHTTP is intended for processing (getting and posting) XML content. However, your content appears to be CSV (comma separated values) data, rather than XML. In addition, you appear to be constructing a request that contains only a single "part", that being the content of a single file. If what you really need to do is upload a single file and save it to disk on the server, here's what I would suggest. * On the client side, you don't really need XMLHTTP. However, if that is the most convenient way of posting content, then it will still work for this purpose. * Do not set the content type header for multipart data. Instead, treat it as a plain post. * On the server side, don't use Commons FileUpload at all. Since you don't need multipart handling, you don't need FileUpload either. * Instead, just call ServletRequest.getInputStream() to get an input stream for the body of the request - which is the contents of the file you posted - and copy the contents of that stream to a file on the disk. That seems to me to be a simpler way of doing what you need, but of course I could be misunderstanding what you really need to do. ;-) -- Martin Cooper "Giovannini Andrea" wrote in message news:192D0B4A713A704895EACB84234B62653AA75C@hulk2000.gformula.net... Hi, I'm using FileUpload to process a file uploaded from Internet Explorer via Jscript, there's no direct form submit but I use the XMLHTTP object since I want control over the result. This is my client code function go() { // I skip some details var fileName = ...; var url = ... + "&fileName=" + fileName; var adoStream = new ActiveXObject("ADODB.Stream"); adoStream.Mode = 3; adoStream.Type = 1; adoStream.Open(); adoStream.LoadFromFile(fileName); var xmlhttp = new ActiveXObject("MSXML2.XMLHTTP"); xmlhttp.open("POST", url, false); var boundary = "----------This_Is_The_Boundary_\r\n"; xmlhttp.setRequestHeader("Content-Type","multipart/form-data; boundary=" + boundary); xmlhttp.setRequestHeader("Content-Length", adoStream.Size); xmlhttp.send(adoStream.Read(adoStream.Size)); } Then I want to save the file on the server. In my servlet I have this code: String path = ... DiskFileUpload upload = new DiskFileUpload(); upload.setRepositoryPath(path); try { List items = upload.parseRequest(request); Iterator iter = items.iterator(); while (iter.hasNext()) { FileItem item = (FileItem) iter.next(); if (!item.isFormField()) { fileName = item.getName(); File uploadedFile = new File(fileName); item.write(uploadedFile); } } } catch(Exception e) { ... } But the parseRequest() returns an empty list. I've debugged the FileUpload code and the problem is that in the discardBodyData() of the class MultipartStream a MalformedStreamException("Stream ended unexpectedly") is thrown and parseRequest() returns an empty collection. So I wonder what's wrong with my uploading... Any idea? Thanks in advance, Andrea ---------------------------------- Andrea Giovannini Java Software Architect Gruppo Formula S.p.A. ---------------------------------- --------------------------------------------------------------------- To unsubscribe, e-mail: commons-user-unsubscribe@jakarta.apache.org For additional commands, e-mail: commons-user-help@jakarta.apache.org