我正在创建Restful Web服务,它接受任何文件并将其保存到文件系统中。我使用Dropwizard来实现服务,Postman / RestClient使用数据来命中请求。我不是在创建multipart(表单数据)请求。
除了保存的文件缺少第一个字符外,每件事情都运行良好。这是我调用服务方法并将其保存到文件系统的代码:
输入请求:
http://localhost:8080/test/request/Sample.txt
Sample.txt的
Test Content
休息控制器
@PUT
@Consumes(value = MediaType.WILDCARD)
@Path("/test/request/{fileName}")
public Response authenticateDevice(@PathParam("fileName") String fileName, @Context HttpServletRequest request) throws IOException {
.......
InputStream inputStream = request.getInputStream();
writeFile(inputStream, fileName);
......
}
private void writeFile(InputStream inputStream, String fileName) {
OutputStream os = null;
try {
File file = new File(this.directory);
file.mkdirs();
if (file.exists()) {
os = new FileOutputStream(this.directory + fileName);
logger.info("File Written Successfully.");
} else {
logger.info("Problem Creating directory. File can not be saved!");
}
byte[] buffer = new byte[inputStream.available()];
int n;
while ((n = inputStream.read(buffer)) != -1) {
os.write(buffer, 0, n);
}
} catch (Exception e) {
logger.error("Error in writing to File::" + e);
} finally {
try {
os.close();
inputStream.close();
} catch (IOException e) {
logger.error("Error in closing input/output stream::" + e);
}
}
}
在输出中,文件已保存,但内容中的第一个字符丢失。 输出:
Sample.txt的:
est Content
在上面的输出文件中,字符T丢失,所有文件格式都会出现这种情况。
我不知道我在这里错过了什么。
请帮我解决这个问题。
谢谢。