long filesize = d.getSize();
@POST @Consumes({ MediaType.MULTIPART_FORM_DATA }) @Produces({ MediaType.APPLICATION_JSON }) public Response uploadStorageFile(@Context UriInfo ui, @Context HttpHeaders hh, @FormDataParam("file") InputStream uploadedInputStream, @FormDataParam("file") FormDataContentDisposition fileDetail){ System.out.println(uploadedInputStream.getClass().getName()); String uploadedFileLocation = fileDetail.getFileName(); long size = fileDetail.getSize(); // save it try { //test.jpg for test purposes OutputStream out = new FileOutputStream(new File("test.jpg")); IOUtils.copy(uploadedInputStream, out); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } String output = "File uploaded to : "; return Response.status(200).entity(output).build();
@POST @Path("/post/images") @Consumes(MediaType.MULTIPART_FORM_DATA) public Response imageUpload(@FormDataParam("image") InputStream hereIsImage, @FormDataParam("image") FormDataContentDisposition hereIsName) { String path = System.getenv("HOME")+"/tmp/"; if(hereIsName.getSize()==0) { return Response.status(500).entity("image parameter is missing").build(); } String name = hereIsName.getFileName(); path += name; try { OutputStream out = new FileOutputStream(new File(name)); int read; byte[] bytes = new byte[1024]; while ((read = hereIsImage.read(bytes)) != -1) { out.write(bytes, 0, read); out.flush(); out.close(); } catch (IOException e) { return Response.status(500).entity(name + " was not uploaded\n"+e.getMessage()).build(); } return Response.status(200).entity(name + " was uploaded").build(); }
if (fileDetails != null && fileDetails.getSize() > (long) sizeLimit) { throw new IllegalArgumentException(String.format(TOO_BIG_ERROR_MESSAGE, sizeLimit)); int bufLen = (fileDetails != null && fileDetails.getSize() > 0) ? (int) fileDetails.getSize() : 64; ByteArrayOutputStream outStream = new ByteArrayOutputStream(bufLen);
createStream(inputStream, mimeType, fileDetail.getSize()));
@Test(expected = IllegalArgumentException.class) public void testReadStreamSizeExceededMaliciousMetadata() throws IOException { when(mockFileDetails.getSize()).thenReturn(LIMIT_MATCH_LENGTH); RequestUtils.readData(new ByteArrayInputStream(LIMIT_EXCEED), mockFileDetails, SIZE_LIMIT); }
@Test public void testBadUpload() throws IOException { int fileSize = StateQueries.FILE_SIZE_LIMIT / FILE_CONTENT.length() * 100; String input = String.join("", Collections.nCopies(fileSize, FILE_CONTENT)); InputStream inputStream = new ByteArrayInputStream(input.getBytes(StateQueries.FILE_ENCODING)); when(formDataContentDisposition.getSize()).thenReturn(((long)fileSize)); when(mockStateStore.fetchProperty(StateQueries.FILE_NAME_PREFIX + FILE_NAME)) .thenReturn(FILE_CONTENT.getBytes(StateQueries.FILE_ENCODING)); Response response = StateQueries.putFile(mockStateStore, FILE_NAME, inputStream, formDataContentDisposition); assertEquals(400, response.getStatus()); assertEquals("Stream exceeds 1024 byte size limit", response.getEntity()); }
@Test public void testReadMetadataSizeExceeded() throws IOException { // If declared length exceeds limit, exit early without reading stream: when(mockFileDetails.getSize()).thenReturn(LIMIT_EXCEED_LENGTH); try { RequestUtils.readData(mockInputStream, mockFileDetails, SIZE_LIMIT); Assert.fail("Expected exception"); } catch (IllegalArgumentException e) { // expected } verifyZeroInteractions(mockInputStream); }
@Test public void testPutAndGetFile() throws IOException { InputStream inputStream = new ByteArrayInputStream(FILE_CONTENT.getBytes(StateQueries.FILE_ENCODING)); when(formDataContentDisposition.getSize()).thenReturn((long)FILE_CONTENT.length()); when(mockStateStore.fetchProperty(StateQueries.FILE_NAME_PREFIX + FILE_NAME)) .thenReturn(FILE_CONTENT.getBytes(StateQueries.FILE_ENCODING)); Response response = StateQueries.putFile(mockStateStore, FILE_NAME, inputStream, formDataContentDisposition); assertEquals(200, response.getStatus()); response = StateQueries.getFile(mockStateStore, FILE_NAME); assertEquals(200, response.getStatus()); assertEquals(FILE_CONTENT, response.getEntity()); }
@POST @Permissions({ @Permission(value = RolePermission.PORTAL_DOCUMENTATION, acls = RolePermissionAction.CREATE) }) @Path("/upload") @Consumes(MediaType.MULTIPART_FORM_DATA) @Produces("text/plain") public Response upload( @FormDataParam("file") InputStream uploadedInputStream, @FormDataParam("file") FormDataContentDisposition fileDetail, @FormDataParam("file") final FormDataBodyPart body ) { String mediaId = null; if (!body.getMediaType().getType().equals("image")) { throw new UploadUnAuthorized("File format unauthorized " + body.getMediaType().getType()+"/"+body.getMediaType().getSubtype()); } else if (fileDetail.getSize() > this.mediaService.getMediaMaxSize()) { throw new UploadUnAuthorized("Max size achieved " + fileDetail.getSize()); } else { mediaId = mediaService.savePortalMedia(new MediaEntity( uploadedInputStream, body.getMediaType().getType(), body.getMediaType().getSubtype(), fileDetail.getFileName(), fileDetail.getSize() )); } return Response.status(200).entity(mediaId).build(); }
@Test public void testReadSizeMatch() throws IOException { // Regardless of declared size in metadata, the stream gets through correctly: when(mockFileDetails.getSize()).thenReturn(LIMIT_MATCH_LENGTH); Assert.assertArrayEquals(LIMIT_MATCH, RequestUtils.readData(new ByteArrayInputStream(LIMIT_MATCH), mockFileDetails, SIZE_LIMIT)); when(mockFileDetails.getSize()).thenReturn(LIMIT_MATCH_LENGTH - 1); Assert.assertArrayEquals(LIMIT_MATCH, RequestUtils.readData(new ByteArrayInputStream(LIMIT_MATCH), mockFileDetails, SIZE_LIMIT)); when(mockFileDetails.getSize()).thenReturn(-1L); Assert.assertArrayEquals(LIMIT_MATCH, RequestUtils.readData(new ByteArrayInputStream(LIMIT_MATCH), mockFileDetails, SIZE_LIMIT)); Assert.assertArrayEquals(LIMIT_MATCH, RequestUtils.readData(new ByteArrayInputStream(LIMIT_MATCH), null, SIZE_LIMIT)); }
@Test public void testReadSizeUnder() throws IOException { // Regardless of declared size in metadata, the stream gets through correctly: when(mockFileDetails.getSize()).thenReturn(LIMIT_UNDER_LENGTH); Assert.assertArrayEquals(LIMIT_UNDER, RequestUtils.readData(new ByteArrayInputStream(LIMIT_UNDER), mockFileDetails, SIZE_LIMIT)); when(mockFileDetails.getSize()).thenReturn(LIMIT_UNDER_LENGTH - 1); Assert.assertArrayEquals(LIMIT_UNDER, RequestUtils.readData(new ByteArrayInputStream(LIMIT_UNDER), mockFileDetails, SIZE_LIMIT)); when(mockFileDetails.getSize()).thenReturn(-1L); Assert.assertArrayEquals(LIMIT_UNDER, RequestUtils.readData(new ByteArrayInputStream(LIMIT_UNDER), mockFileDetails, SIZE_LIMIT)); Assert.assertArrayEquals(LIMIT_UNDER, RequestUtils.readData(new ByteArrayInputStream(LIMIT_UNDER), null, SIZE_LIMIT)); } }
@Test public void testFailedUpload() throws IOException { InputStream inputStream = new ByteArrayInputStream(FILE_CONTENT.getBytes(StateQueries.FILE_ENCODING)); when(formDataContentDisposition.getSize()).thenReturn( (long)FILE_CONTENT.getBytes(StateQueries.FILE_ENCODING).length); doThrow(new StateStoreException(new PersisterException(Reason.STORAGE_ERROR, "Failed to store"))) .when(mockStateStore).storeProperty( StateQueries.FILE_NAME_PREFIX + FILE_NAME, FILE_CONTENT.getBytes(StateQueries.FILE_ENCODING)); Response response = StateQueries.putFile(mockStateStore, FILE_NAME, inputStream, formDataContentDisposition); assertEquals(500, response.getStatus()); }
@Test public void testReadNoLimit() throws IOException { when(mockFileDetails.getSize()).thenReturn(LIMIT_EXCEED_LENGTH); Assert.assertArrayEquals(LIMIT_EXCEED, RequestUtils.readData(new ByteArrayInputStream(LIMIT_EXCEED), mockFileDetails, 0)); Assert.assertArrayEquals(LIMIT_EXCEED, RequestUtils.readData(new ByteArrayInputStream(LIMIT_EXCEED), mockFileDetails, -1)); when(mockFileDetails.getSize()).thenReturn(LIMIT_MATCH_LENGTH); Assert.assertArrayEquals(LIMIT_MATCH, RequestUtils.readData(new ByteArrayInputStream(LIMIT_MATCH), mockFileDetails, 0)); Assert.assertArrayEquals(LIMIT_MATCH, RequestUtils.readData(new ByteArrayInputStream(LIMIT_MATCH), mockFileDetails, -1)); }
@POST @Permissions({ @Permission(value = RolePermission.PORTAL_DOCUMENTATION, acls = RolePermissionAction.CREATE) }) @Path("/upload") @Consumes(MediaType.MULTIPART_FORM_DATA) @Produces("text/plain") public Response upload( @FormDataParam("file") InputStream uploadedInputStream, @FormDataParam("file") FormDataContentDisposition fileDetail, @FormDataParam("file") final FormDataBodyPart body ) { String mediaId = null; if (!body.getMediaType().getType().equals("image")) { throw new UploadUnAuthorized("File format unauthorized " + body.getMediaType().getType()+"/"+body.getMediaType().getSubtype()); } else if (fileDetail.getSize() > this.mediaService.getMediaMaxSize()) { throw new UploadUnAuthorized("Max size achieved " + fileDetail.getSize()); } else { mediaId = mediaService.savePortalMedia(new MediaEntity( uploadedInputStream, body.getMediaType().getType(), body.getMediaType().getSubtype(), fileDetail.getFileName(), fileDetail.getSize() )); } return Response.status(200).entity(mediaId).build(); }
long filesize = d.getSize();