I have to upload a file from my site yet cnt seem to get it working with drop wizard.
Here is the form from my site.
<form enctype="multipart/form-data" method="POST" action="UploadFile"> <input type="file" id="fileUpload" name="file"/> <input type="hidden" id="fileName" name="fileName"/> <input type="submit" value="Upload"/> </form>
How would I go about on the backend to receive the file?
The solution was
@POST @Consumes(MediaType.MULTIPART_FORM_DATA) public Response uploadFile( @FormDataParam("file") final InputStream fileInputStream, @FormDataParam("file") final FormDataContentDisposition contentDispositionHeader) { String filePath = uploadLocation + newFileName; saveFile(fileInputStream, filePath); String output = "File can be downloaded from the following location : " + filePath; return Response.status(200).entity(output).build(); } private void saveFile(InputStream uploadedInputStream, String serverLocation) { try { OutputStream outputStream = new FileOutputStream(new File(serverLocation)); int read = 0; byte[] bytes = new byte[1024]; outputStream = new FileOutputStream(new File(serverLocation)); while ((read = uploadedInputStream.read(bytes)) != -1) { outputStream.write(bytes, 0, read); } outputStream.flush(); outputStream.close(); } catch (IOException e) { e.printStackTrace(); } }
You could do the saving to the server in lesser number of lines using nio
java.nio.file.Path outputPath = FileSystems.getDefault().getPath(<upload-folder-on-server>, fileName); Files.copy(fileInputStream, outputPath);
Also, if you're using 0.7.0-rc2, you will need this dependency in your pom.xml
<dependency> <groupId>com.sun.jersey.contribs</groupId> <artifactId>jersey-multipart</artifactId> <version>1.18</version> </dependency>
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With