Ich habe ein Back-End-Servlet geschrieben, um den Upload von Dateien mit der instantUpload
-Funktion von sap.m.UploadCollection
in Openui5 zu behandeln. Während ich mehrere Dateien auf den Server hochlade, habe ich die sap.m.UploadCollection
anstelle der sap.ui.unified.FileUploader
gewählt. Wenn ich versuche, eine Liste von FileItem Instanzen aus der HttpServletRequest im Servlet parsen, gibt es mir die AusnahmeHochladen von Dateien mit sap.m.UploadCollection in Openui5 mit einem Back-End-Servlet funktioniert nicht
die Anforderung enthält keine multipart/form-data oder multipart/mixed Strom
Die ServletFileUpload.isMultipartContent(request)
gibt mir offensichtlich eine false
zurück und bestätigt mir, dass es sich nicht um eine multipart/form-data-Anfrage handelt.
XML-Code:
<UploadCollection id="UploadCollection1"
multiple="true"
sameFilenameAllowed="true"
showSeparators="All"
change="onChangeUploadCollection"
fileDeleted="onFileDeleted"
selectionChange="onSelectionChange"
uploadComplete="onUploadCompleteUploadCollection"
beforeUploadStarts="onBeforeUploadStarts"
items="{path : '/record/uploadcollectionitems', templateShareable : 'true'}"
uploadUrl="{/record/upload}"
mode="SingleSelectLeft">
<toolbar>
<OverflowToolbar id="myId1">
<Title id="attachmentTitle1" />
<ToolbarSpacer />
<Button id="downloadButton1" text="Download" press="onDownloadItem"
enabled="false" type="Transparent"></Button>
</OverflowToolbar>
</toolbar>
<items>
<UploadCollectionItem documentId="{documentId}"
fileName="{fileName}" mimeType="{mimeType}"
url="{url}" enableEdit="true" enableDelete="true"
visibleDelete="true" visibleEdit="true"
statuses="{path : '/record/uploadcollectionitems', templateShareable : 'true'}"
selected="false">
<statuses>
<ObjectStatus title="{Status}" visible="false"
state="{state}" icon="{icon}" iconDensityAware="{iconDensityAware}"
textDirection="{textDirection}" />
</statuses>
</UploadCollectionItem>
</items>
</UploadCollection>
Die uploadURL
in den XML-Punkten auf das Servlet, die Ausführung beginnt, nachdem die Auswahl der Datei auf dem Front-End erfolgt.
Wenn ich die Fileuploader anstelle des UploadCollection verwenden möchten, es kodiert die Anforderung erfolgreich als multipart/form-data, aber es ist nicht meine Anforderungen erfüllen.
Ich habe auch versucht content-type
als HeaderParameter hinzufügen und auf multipart/form-data
, um die Einstellung der Anfrage als multipart/form-data
zu machen. Da ein solcher Schritt nicht ratsam ist, habe ich ihn in der Mitte abgebrochen.
Da das Steuerelement sap.m.UploadCollection das Steuerelement sap.ui.unified.FileUploader verwendet und Abhängigkeiten zu diesem Steuerelement enthält, ist es verwirrend, warum das erste das HttpServletRequest nicht als multipart/form-data
sendet.
Hinweis: ich nicht die entsprechenden JavaScript Code oder die Servlet Code der Kürze halber Zwecke aufgenommen haben. Ich werde sie gerne bei Bedarf hinzufügen.
Vielen Dank für Ihre Antwort. Anstatt in die Erstellung der FileUploader-Instanz zu intervenieren und den usingMultipart auf true zu setzen, habe ich tatsächlich die Funktionen 'copy' und 'copyLarge' von commons.io.IOUtils zum Hochladen verwendet die Dateien. –