У меня есть текущая служба в приложении angular 5:
const httpOptions = {
headers: new HttpHeaders({ 'Accept': 'application/json', 'Content-Type': 'multipart/form-data' })
};
@Injectable()
export class UploadService {
constructor(private http: HttpClient) { }
// file from event.target.files[0]
uploadFile(url: string, file: File): Observable<any> {
let formData = new FormData();
formData.append('upload', file, file.name);
return this.http.post(url, formData, httpOptions);
}
}
И у меня есть метод resteasy в приложении java:
@POST
@Path("MyThing/Pic")
@Consumes("multipart/form-data")
@Produces("application/json")
public void uploadImage(InputStream stream){
try {
byte[] buffer = new byte[stream.available()];
stream.read(buffer);
File targetFile = new File("xyz.png");
OutputStream outStream = new FileOutputStream(targetFile);
outStream.write(buffer);
outStream.flush();
outStream.close();
} catch (IOException e) {
// TODO throw!
e.printStackTrace();
}
}
Проблема в том, что мне нужно знатьимя файла на стороне сервера, по крайней мере суффикс имени файла, который является типом файла.Если кто-то загружает JPEG, я хочу сохранить JPEG, а не PNG по умолчанию, например.Есть ли лучший способ отправить файл из 'multipart / form-data' и если да, каким должно быть определение метода на стороне сервера в этом случае?Спасибо!