Hi,

I am not able to properly upload an image file (binary) to the Restlet
server using the Filepload extension. The uploaded images are either
corrupt/distorted looking or they are of lesser size than original.
I have tried using both FileItem.write(File f) method & using the
InputStream.
Are there any special properties/methods to be set for uploading a binary
data ?

I have been using curl to upload the image with the following command
curl -F "upload=@img.jpg;type=image/jpg;filename=img.jpg"
http://localhost:....

One strange behavior is that, when in the curl command, the type parameter
is changed to image/jpeg, the uploaded image is still corrupt & distorted
but looks differently in the picture manager than the one uploaded with
image/jpg.
Please help.

PS: The versions of different libs used:
restlet-2.1-SNAPSHOT
commons-fileupload-1.2.1/1.2.2 (both tested)
commons-io-1.3.1
servlet-api-2.4
portlet-api-1.0

Following is the code snippet.

 DiskFileItemFactory factory = new DiskFileItemFactory();
factory.setSizeThreshold(1000240);
RestletFileUpload upload = new RestletFileUpload(factory);
List<FileItem> items = upload.parseRequest(getRequest())
.
.
for (final Iterator<FileItem> it = items.iterator(); it.hasNext();) {
    DiskFileItem fi = (DiskFileItem) it.next();
    // Process the items that *really* contains an uploaded
    // file and save them on disk
    if (fi.getName() != null) {
InputStream is = fi.getInputStream();
final int size=1024;
byte[] buf;
int ByteRead,ByteWritten=0;
BufferedOutputStream outStream = new BufferedOutputStream(new
FileOutputStream(uploadedFile), size);
buf = new byte[size];
while ((ByteRead = is.read(buf, 0, size)) != -1) {
    outStream.write(buf, 0, ByteRead);
    ByteWritten += ByteRead;
}
outStream.flush();
outStream.close();
is.close();
//fi.write(uploadedFile)
}

Regards
Lokendra

------------------------------------------------------
http://restlet.tigris.org/ds/viewMessage.do?dsForumId=4447&dsMessageId=2756062

Reply via email to