can you try not casting to DiskFileItem and just use FileItem.getinputstrema()?
-igor
On Wed, Mar 5, 2008 at 7:25 AM, Piller Sébastien <[EMAIL PROTECTED]> wrote:
>
> Hello,
>
> I have a weird problem with the file upload using Wicket.
>
> I have a flex application on client side, and the user can upload some
> files. Flex code is as simple as:
>
> var fr:FileReference=new FileReference();
> fr.addEventListener(Event.SELECT, function(e:Event):void {
> var postVariables:URLVariables = new URLVariables;
> postVariables.sessionid = "qwerttrew"; // some content here
>
> var req:URLRequest = new URLRequest;
> req.url = "http://localhost:8080/path/to/my/wicket/script/";
> req.method = URLRequestMethod.POST;
> req.data = postVariables;
>
> fr.upload(req);
> });
>
> fr.addEventListener(HTTPStatusEvent.HTTP_STATUS,
> function(e:HTTPStatusEvent):void {
> if(e.status == 500) Alert.show("Une erreur a été rencontrée. Veuillez
> réessayer!");
> });
>
> fr.addEventListener(DataEvent.UPLOAD_COMPLETE_DATA, function(e:Event):void
> {
> trace("upload complete");
> });
>
> fr.addEventListener(IOErrorEvent.IO_ERROR, function(e:Event):void {
> Alert.show("IOError: "+e);
> });
>
> fr.browse([new FileFilter("Fichiers autorisés",
> "*.jpeg;*.jpg;*.png;*.swf")]);
>
> On the wicket side, the code is:
>
> Request request = getRequest();
> if (!(request instanceof ServletWebRequest)) {
> return;
> }
>
> ServletWebRequest swr = (ServletWebRequest) request;
> HttpServletRequest hsr = swr.getHttpServletRequest();
>
> if (!ServletFileUpload.isMultipartContent(hsr)) { return; }
>
> MultipartServletWebRequest mswr;
> try {
> mswr = new MultipartServletWebRequest(hsr, Bytes.megabytes(2));
> } catch (FileUploadException e) {
> e.printStackTrace();
> throw new RuntimeException("Unable to get uploaded file!", e);
> }
>
> String sessionid = mswr.getParameter("sessionid");
> Map map = mswr.getFiles();
>
> for (Object o : map.keySet()) {
> Object object = map.get(o);
>
> if (object instanceof DiskFileItem) {
> DiskFileItem dfi = (DiskFileItem) object;
> File originalFile = dfi.getStoreLocation();
>
> if (originalFile.length() <= 0) {
> throw new IOException("No data were sent!"); // <-- THROW THIS
> EXCEPTION WITH SOME FILES!!
> }
>
> File directory = new
> File(AbstractApplication.get().getUploadFolder(), "logos");
> directory = new File(directory, "temp");
> directory.mkdirs();
>
> File tempFile = new File(directory, sessionid + "_" + tref + "." +
> FileUtils.getExt(dfi.getName()));
>
> try {
> if (!FileUtils.move(originalFile, tempFile)) {
> throw new IOException("Unable to move file from source to
> target!");
> }
>
> } catch (IOException e) {
> throw new AbortWithHttpStatusException(500, false);
> }
> break;
> }
> }
>
> Well, this works fine, except with some specific files. I've a file
> "a.png", and it is always uploaded successfully. And I've a file "b.png",
> which always fail!! (they are both very close on theire size, several KB).
>
> When it comes on the wicket code, the file length is 0 bytes... I'm not
> very sure that it's a wicket problem, it may also be a Flex one... But I
> never saw any thread on the Flex forums that speak about upload problems...
>
> Could anybody explain what is the problem?
>
> Thank you very much!
> --------------------------------------------------------------------- To
> unsubscribe, e-mail: [EMAIL PROTECTED] For additional
> commands, e-mail: [EMAIL PROTECTED]
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]