我在资源类中有一个方法uploadFile . 它调用一个方法,该方法将文件作为参数,然后在将所述部分写入磁盘之前将文件拆分为多个部分 .
我想知道如何为它编写客户端测试,假设可以在不使用@FormDataParam InputStream的情况下上传文件 . 因为在这种情况下我认为我不需要它 .
我已经看到很多用Jersey上传文件的例子,它将InputStream和FormDataContentDisposition作为@FormDataParam,但我不确定这是否是强制性的 .
@POST
@Path("/uploadfile/{file}")
@Consumes(MediaType.MULTIPART_FORM_DATA)
public Response uploadFile(@PathParam("file") File file, @FormDataParam("file") FormDataContentDisposition fileMetaData) throws IOException {
FileSplit.splitFile(file); //Write file to disk
String output = "File successfully uploaded";
return Response.status(200).entity(output).build();
}
//Method to write file to disk
public static void splitFile(File f) throws IOException {
int partCounter = 1;
int sizeOfFiles = (int) (f.length() / 3);
byte[] buffer = new byte[sizeOfFiles];
String fileName = f.getName();
try (FileInputStream fis = new FileInputStream(f);
BufferedInputStream bis = new BufferedInputStream(fis)) {
int bytesAmount = 0;
while ((bytesAmount = fis.read(buffer)) != -1) {
String filePartName = String.format("%s.%03d", fileName, partCounter++);
File newFile = new File("D:\\", filePartName);
try (FileOutputStream out = new FileOutputStream(newFile)) {
out.write(buffer, 0, bytesAmount);
}
}
}
}