Eine Web-Anwendung enthält neben den statischen und dynamischen HTML-Seiten in der Regel weitere statische Dateien, wie Bilder oder Logos. Hierbei muss zwischen den Dateien, die zur Applikation gehören (wie Hintergrundgrafiken, Buttons, Logos, etc.) und Dateien, die Teil der Anwendungsdaten
sind (Fotos von Häusern eines Immobilienmarktplatzes, Buchcover, Mitarbeiterbilder, etc.), unterschieden werden. Bei BSP-Applikationen, die mit dem SAP Web Application Server entwickelt werden, kann diese Trennung sauber vollzogen werden.
Die Dateien, die zur Applikation gehören, werden im MIME-Repository als Bestandteil der BSP-Applikation abgelegt und in der Regel gemeinsam mit den BSPs, also den Seiten selbst, verwaltet, transportiert
und ggf. übersetzt. Die Bilder und binären Objekte, die zu den Anwendungsdaten (Stammdaten und Bewegungsdaten in der Datenbank) gehören, sollten dagegen zusammen mit diesen verwaltet und transportiert werden.
Zusätzlich sind Szenarien möglich, in denen beliebige Dokumente über den Browser in das System eingespielt werden sollen, d.h. File-Upload.
Siehe auch:
File-Upload und Manipulation des Content
Beispiel
Ein Beispiel für den File-Upload finden Sie in der BSP-Applikation it00.
Das Layout der BSP könnte so aussehen.
Syntax
<%@ page language="abap"%>
<html>
<body>
<h2> Form with File Upload and Download </h2>
<p>Choose a file for upload. The file will be echoed
to your browser if you select the checkbox below.
<form method="POST" enctype="multipart/form-data">
<table border=1 width="100%">
<tr>
<td> <input type=checkbox name="doEcho"> </td>
<td> <input type=checkbox name="doEcho" value="X">
(select for echo)</td>
</tr>
<tr>
<td> <input type=file name="echoFile"> </td>
<td> <input type=file name="echoFile"> </td>
</tr>
<tr>
<td> <input type=submit name="onInputProcessing(upload)"
value="Submit"> </td>
<td> <input type=submit name="onInputProcessing(upload)"
value="Submit"> </td>
</tr>
</table>
</form>
</body>
</html>
Ende des Codes
|
Wenn Sie die Seite aufrufen, sehen Sie folgendes Bild.
Der eigentliche Upload findet statt, wenn Sie Submit wählen, also im Eventhandler OnInputProcessing:
Syntax
* event handler for checking and processing user input and
* for defining navigation
* file upload and echo
data: entity type ref to if_http_entity,
file type xstring,
content_type type string,
content_length type string,
num_multiparts type i,
i type i value 1,
doEcho type string,
value type string.
* find multipart containing file
num_multiparts = request->num_multiparts( ).
while i <= num_multiparts.
entity = request->get_multipart( i ).
value = entity->get_header_field( '~content_filename' ).
if not value is initial.
* found a file!
navigation->set_parameter( name = 'content_filename'
value = value ).
content_type = entity->get_header_field( 'Content-Type' ).
navigation->set_parameter( name = 'content_type'
value = content_type ).
* get file content
file = entity->get_data( ).
* get file size
content_length = xstrlen( file ).
navigation->set_parameter( name = 'content_length'
value = content_length ).
* echo/download the same file again?
doEcho = request->get_form_field( 'doEcho' ).
if doEcho is not initial.
* set response data to be the file content
runtime->server->response->set_data( file ).
* set the mime-type and file size in the response
runtime->server->response->set_header_field(
name = 'Content-Type'
value = content_type ).
runtime->server->response->set_header_field(
name = 'Content-Length'
value = content_length ).
runtime->server->response->delete_header_field(
name = 'Cache-Control' ).
runtime->server->response->delete_header_field(
name = 'Expires' ).
endif.
exit.
endif.
i = i + 1.
endwhile.
if doEcho is not initial.
* signal to the BSP runtime that the response data is
* complete and no onLayout method should be called to
* create the response
navigation->response_complete( ).
else.
navigation->goto_page( 'transition_parameter_upload.htm' ).
endif.
Ende des Codes
|
Wenn Sie also ein File angegeben haben und die Echo-Checkbox aktiviert haben, sehen Sie den Inhalt der gewählten Datei im Browser: