Expand my Community achievements bar.

Don’t miss the AEM Skill Exchange in SF on Nov 14—hear from industry leaders, learn best practices, and enhance your AEM strategy with practical tips.
SOLVED

How to create File Object in AEM if using apache http client to post file to AEM

Avatar

Former Community Member

Hi there,

I have a case that it need to use apache http client to post file(e.g., XML file format) to AEM. Below is client code snippet :

public void SubmitPost(String url, String filename, String filepath) { HttpClient httpclient = new DefaultHttpClient(); try { HttpPost httppost = new HttpPost(url); FileBody bin = new FileBody(new File(filepath + File.separator + filename)); StringBody comment = new StringBody(filename); MultipartEntity reqEntity = new MultipartEntity(); reqEntity.addPart("file", bin); reqEntity.addPart("filename", comment); httppost.setEntity(reqEntity); HttpResponse response = httpclient.execute(httppost); int statusCode = response.getStatusLine().getStatusCode(); if (statusCode == HttpStatus.SC_OK) { System.out.println("Server response Okey....."); HttpEntity resEntity = response.getEntity(); System.out.println(EntityUtils.toString(resEntity)); System.out.println(resEntity.getContent()); EntityUtils.consume(resEntity); } } catch (ParseException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { try { httpclient.getConnectionManager().shutdown(); } catch (Exception ignore) { } } }

But i wondering how to program the server and create a java File object since need to use SlingHttpServletRequest also read the file data. Anyone had ever experience it? Please comment on it。

public class HandleFile extends org.apache.sling.api.servlets.SlingAllMethodsServlet { private static final long serialVersionUID = 2598426539166789515L; private Session session; /** Default log. */ protected final Logger log = LoggerFactory.getLogger(this.getClass()); // Inject a Sling ResourceResolverFactory @Reference private ResourceResolverFactory resolverFactory; @Override protected void doPost(SlingHttpServletRequest request, SlingHttpServletResponse response) throws ServerException, IOException { //TODO //To create file Object here so that read it }

 

Thanks a lot in advance.

 

Best regards,

Brian

1 Accepted Solution

Avatar

Correct answer by
Level 4
4 Replies

Avatar

Correct answer by
Level 4

Avatar

Former Community Member

hi sumit, i saw that aritcle before. And this post target is how to create Java File Object in AEM since i need to use File Object to another function.

thanks for your comment.

Avatar

Level 10

In the above artilce - it shows you how to get an InputStream from the posted file (exactly what you are asking for). Once you get the InputStream - you can easily create a file using Java in your OSGi bundle:

http://www.mkyong.com/java/how-to-convert-inputstream-to-file-in-java/

Avatar

Former Community Member

Great, it is just fit to my need. Thanks for your reply.