@MultipartForm, Wie man die original-Datei-Namen?
Ich bin mit jboss Ruhe-einfach multipart-Anbieter für den Import einer Datei. Ich lese hier http://docs.jboss.org/resteasy/docs/1.0.0.GA/userguide/html/Content_Marshalling_Providers.html#multipartform_annotation bezüglich @MultipartForm, weil ich kann mich noch genau anzeigen, das es mit meiner POJO.
Unten ist mein POJO
public class SoftwarePackageForm {
@FormParam("softwarePackage")
private File file;
private String contentDisposition;
public File getFile() {
return file;
}
public void setFile(File file) {
this.file = file;
}
public String getContentDisposition() {
return contentDisposition;
}
public void setContentDisposition(String contentDisposition) {
this.contentDisposition = contentDisposition;
}
}
Dann habe ich das file-Objekt und gedruckt wird der absolute Pfad und es kehrte eine Datei name der Typ-Datei. Die extension hochgeladen und Dateinamen gehen verloren. Mein client versucht, laden Sie eine Archivdatei(zip,tar,z)
Ich brauche diese Informationen an der server-Seite, so dass ich mich bewerben kann die un-Archiv-Programm richtig.
Den ursprünglichen Dateinamen an den server gesendet wird im content-disposition-header.
Wie bekomme ich diese Informationen? Oder wenigstens, wie kann ich sagen, dass jboss die Datei speichern mit dem hochgeladenen Dateinamen und die Dateierweiterung? Ist es konfigurierbar von meiner Bewerbung?
- Können Sie versuchen, das hinzufügen
@PartType("application/zip")
zu Ihremfile
und sehen, ob es funktioniert? Das vollständige Paket istorg.jboss.resteasy.annotations.providers.multipart.PartType
. - Ja ich werde es versuchen. Was ist der Wert, der für Teer-und Z-Dateien?
- Nicht verwenden 🙁 Es hat nicht funktioniert. Ich verstehe nicht, warum Menschen, die wrap-apis wenn Sie nicht bieten alle Funktionen, die die original-apis bieten. Sie sagen, dass etwas getan werden kann, besser, Sie stellen apis, Sie bringen mehr Probleme, und durch die Zeit, die wir kennenlernen, sind wir gesperrt. Ich bin mit dieser Arbeit von fast 3 Tagen und satt.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nachdem wir uns ein wenig um, für Resteasy Beispiele, darunter dieses ein, wie es scheint, gibt es keine Möglichkeit zum abrufen der original-Dateinamen und die Erweiterung an Informationen, die bei der Verwendung einer POJO-Klasse mit der
@MultipartForm
annotation.Den Beispielen die ich bisher gesehen habe abrufen, die mit dem Namen von der
Content-Disposition
header aus dem "Datei" - Teil der eingereichten multiparts Formulardaten via HTTP-POST, die im wesentlichen in etwa so aussieht:Werden Sie zum aktualisieren der Datei-upload-REST-Dienst der Klasse zu extrahieren, diesen header so:
Hoffe, das hilft.
Könnten Sie @PartFilename aber leider ist dies derzeit nur für das schreiben genutzt Formen, nicht Lesen ist: RESTEASY-1069.
Bis dieses Problem behoben ist, könnten Sie
MultipartFormDataInput
als parameter für Ihre Ressource-Methode.Scheint es, dass Isim ist richtig, aber es gibt einen workaround.
Erstellen ein verstecktes Feld in das Formular und aktualisieren Sie dessen Wert mit den ausgewählten Dateinamen. Wenn das Formular abgeschickt wird, wird der Dateiname übermittelt, als eine @FormParam.
Hier ist etwas code, die Sie benötigen könnten (jquery benötigt).