• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Re: FileUpload with ERRest
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: FileUpload with ERRest


  • Subject: Re: FileUpload with ERRest
  • From: André Rothe <email@hidden>
  • Date: Wed, 14 Mar 2018 15:52:17 +0100

The NPE comes from the wrong response format, I have to use
"/upload.html" to define HTML as output format.

My upload class is now:

public class UploadController extends ERXRouteController {

private static final int HTTP_BAD_REQUEST = 400;
private static final String EXPECTED_MIME_TYPE = "application/zip";

public UploadController(WORequest request) {
  super(request);
}

public WOActionResults uploadFileAction() throws Throwable {

  // TODO: handle user permissions

  if (!request().isMultipartFormData()) {
    return buildResponse("Only multipart/form-data allowed",
                         HTTP_BAD_REQUEST);
  }

  // you need an input element of type=file within the client
  // which has a name=upload

  String mimetype = (String)
            request().formValueForKey("upload.mimetype");
  String filename = (String)
            request().formValueForKey("upload.filename");
  WOInputStreamData stream = (WOInputStreamData)
            request().formValueForKey("upload");

  if (!(EXPECTED_MIME_TYPE.equalsIgnoreCase(mimetype))) {
    return buildResponse("MIMETYPE", HTTP_BAD_REQUEST);
  }

  try {

    String uploadedFileLocation = FileHandler.getTemporaryFolder() +
                       File.separator +
                       NSPathUtilities.lastPathComponent(filename);
    writeToFile(stream.inputStream(), uploadedFileLocation);

  } catch (IOException e) {
    return buildResponse("FILE", HTTP_BAD_REQUEST);
  }

  // TODO: create an EO which knows the new file

  return buildResponse("OK", WOResponse.HTTP_STATUS_OK);
}

private void writeToFile(InputStream uploadedInputStream,
                String uploadedFileLocation) throws IOException {

// upload file to the temp folder from inputStream

}

private WOResponse buildResponse(String message, int status) {
  WOResponse r = WOApplication.application()
                     .createResponseInContext(context());
  r.setContent(message);
  r.setHeader("text/html", "Content-Type");
  r.setStatus(status);
  return r;
}

}

I can access the controller from a GWT application (FormPanel), which
can react to the response values (OK, FILE, MIMETYPE) within a
SubmitCompleteHandler.

Maybe somebody finds it useful.
André


On 13.03.2018 17:07, André Rothe wrote:
> Hm, this results in a NullPointerException on response() and
> errorResponse(). Is it mandatory to have an EO name within the route?
>
> André
>
> On 13.03.2018 15:58, André Rothe wrote:
>> Maybe I can add a route in the Application class:
>>
>> routeRequestHandler.addRoute(new ERXRoute(null, "/upload",
>> ERXRoute.Method.Post, UploadController.class, "uploadFile"));
>>
>> And then I could implement a controller class UploadController:
>>
>> public class UploadController extends ERXRouteController {
>>
>>   private static final int HTTP_UNSUPPORTED_MEDIA_TYPE = 415;
>>
>>   public UploadController(WORequest request) {
>>     super(request);
>>   }
>>
>>   public WOActionResults uploadFileAction() throws Throwable {
>>
>>     if (!request().isMultipartFormData()) {
>>       return errorResponse(HTTP_UNSUPPORTED_MEDIA_TYPE);
>>     }
>>
>>     // TODO: get some form parameters and values,
>>     // store the file content into the temp folder,
>>     // process the file
>>
>>     // TODO: maybe I can return the newly created EO id?
>>
>>     return response(WOResponse.HTTP_STATUS_OK);
>>   }
>> }
>>
>> ~André
>>
>> On 13.03.2018 14:07, André Rothe wrote:
>>> Hi,
>>>
>>> Is it possible to use ERRest for a file upload with multipart-form-data?
>>> I try to upload a file to the server to create an instance of an EO
>>> (instead of the createAction()).
>>>
>>> Thank you
>>> André
>>>
>>>  _______________________________________________
>>> Do not post admin requests to the list. They will be ignored.
>>> Webobjects-dev mailing list      (email@hidden)
>>> Help/Unsubscribe/Update your Subscription:
>>>
>>> This email sent to email@hidden
>>>
>>
>

--
UNIVERSITÄT LEIPZIG
Medizinische Fakultät
Zentrum für Klinische Studien Leipzig – KKS
André Rothe
CIO
Härtelstr. 16-18, 04107 Leipzig

Tel: 0341/ 97 16118
Fax: 0341/ 97 16189
WWW: http://www.zks.uni-leipzig.de

 _______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list      (email@hidden)
Help/Unsubscribe/Update your Subscription:

This email sent to email@hidden

References: 
 >FileUpload with ERRest (From: André Rothe <email@hidden>)
 >Re: FileUpload with ERRest (From: André Rothe <email@hidden>)
 >Re: FileUpload with ERRest (From: André Rothe <email@hidden>)

  • Prev by Date: Re: FileUpload with ERRest
  • Next by Date: Strange error
  • Previous by thread: Re: FileUpload with ERRest
  • Next by thread: Strange error
  • Index(es):
    • Date
    • Thread