Я новичок в Java EE, и я хотел бы, чтобы пользователь загружал файл XML своей файловой системой. Мое приложение использует API REST. Файл для загрузки успешно загружается на сервер (в локальном хосте), но я замечаю, что некоторые данные метаданных являются частью этого нового файла, поэтому он застревает там!Файл, загруженный через файловую систему с использованием API REST
Пример: Для того, чтобы загрузить файл «web.xml», вот что добавляется к заголовку и конец нового файла (на стороне сервера)
Header:
------WebKitFormBoundarybi7qp5AIFEXbebt7
Content-Disposition: form-data; name="datafile"; filename="web.xml"
Content-Type: text/xml
End of new file
------WebKitFormBoundarybi7qp5AIFEXbebt7--
Смотрите ниже файл клиента и на стороне сервера кода HTML
Client.HTML
</body>
<form action="rest/file/upload" enctype="multipart/form-data" method="post">
<p>
Entrer un fichier xml:<br>
<input type="file" name="datafile" size="40">
</p>
<div>
<input type="submit" value="Send">
</div>
</form>
</body>
У нас есть это выше «Client.HTML» с помощью простого метода GET с сервера. При отправке формы метод POST ниже называется
UploadService.java
@Path("/file")
public class UploadService {
@POST
@Path("/upload")
@Produces("text/html")
@Consumes(MediaType.MULTIPART_FORM_DATA)
public Response uploadFile(@Context HttpServletRequest request) {
String uploadedFileLocation = "D:\\rest.xml";
InputStream in;
try {
in = request.getInputStream();
// save it
writeToFile(in, uploadedFileLocation);
} catch (IOException e) {
}
String output = "File uploaded to : " + uploadedFileLocation;
return Response.status(200).entity(output).build();
}
// save uploaded file to new location
private void writeToFile(InputStream uploadedInputStream,
String uploadedFileLocation) {
try {
OutputStream out = new FileOutputStream(new File(uploadedFileLocation));
int read = 0;
byte[] bytes = new byte[1024];
while ((read = uploadedInputStream.read(bytes)) != -1) {
out.write(bytes, 0, read);
}
out.flush();
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
Любая помощь или рекомендации для его решения, пожалуйста?