Приветствую сообщество!В настоящее время я разрабатываю RESTful web service
в Java
с использованием библиотеки JAX-rs
.Я хотел бы, чтобы клиенты могли загружать файлы через сервис.Мне удалось это сделать, используя следующий фрагмент кода
@Consumes({"application/json"})
@Produces({"application/json"})
@Path("uploadfileservice")
public interface UploadFileService {
@Path("/fileupload")
@POST
@Consumes(MediaType.MULTIPART_FORM_DATA)
Response uploadFile(@FormDataParam("file") InputStream uploadedInputStream)
}
Класс реализации
@Service
public class UploadFileServiceImpl implements UploadFileService {
@Override
public Response uploadFile(InputStream uploadedInputStream){
String fileToWrite = "//path/file.txt" //assuming a upload a txt file
writeToFile(uploadedInputStream, fileToWrite); //write the file
}
private void writeToFile(InputStream uploadedInputStream,
String uploadedFileLocation) {
try {
OutputStream out = new FileOutputStream(new File(
uploadedFileLocation));
int read = 0;
byte[] bytes = new byte[1024];
out = new FileOutputStream(new File(uploadedFileLocation));
while ((read = uploadedInputStream.read(bytes)) != -1) {
out.write(bytes, 0, read);
}
out.flush();
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
Я использую POSTMAN
в качестве клиента для тестирования моеговеб-службы, и я столкнулся со следующей проблемой: Когда я загружаю файл .txt, к этим файлам добавляются некоторые другие сведения о файле
Пример:
Файлотправлено
Запрос почтальона
Файл, хранящийся в моей файловой системе
Есть идеи, почему это происходит?Может быть, я что-то упустил в разделе Headers
моего запроса?Или, может быть, возникла какая-либо проблема из-за MediaType
, который я потребляю в моей конечной точке веб-службы?
Заранее благодарен за любую помощь:)
PS
Если я загружаю файл .pdf, он не приводит к повреждению, а файл .pdf обычно хранится в моей файловой системе