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]

Reply via email to