Anfang des Inhaltsbereichs

Funktionsdokumentation File-Upload in BSP-Applikationen  Dokument im Navigationsbaum lokalisieren

Verwendung

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

Voraussetzungen

Für das File-Handling in BSP-Applikationen benötigen Sie Kenntnisse in den folgenden Bereichen:

Beispiel

Ein Beispiel für den File-Upload finden Sie in der BSP-Applikation it00.

Das Layout der BSP könnte so aussehen.

<%@ 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> &lt;input type=checkbox name="doEcho"&gt; </td>

      <td> <input type=checkbox name="doEcho" value="X"> (select for echo)</td>

    </tr>

    <tr>

      <td> &lt;input type=file name="echoFile"&gt; </td>

      <td> <input type=file name="echoFile"> </td>

    </tr>

    <tr>

      <td> &lt;input type=submit name="onInputProcessing(upload)" value="Submit"&gt; </td>

      <td> <input type=submit name="onInputProcessing(upload)" value="Submit"> </td>

    </tr>

  </table>

</form>

  </body>

</html>

Wenn Sie die Seite aufrufen, sehen Sie folgendes Bild.

Diese Grafik wird im zugehörigen Text erklärt

Der eigentliche Upload findet statt, wenn Sie Submit wählen, also im Eventhandler OnInputProcessing:

* 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.

Wenn Sie also ein File angegeben haben und die Echo-Checkbox aktiviert haben, sehen Sie den Inhalt der gewählten Datei im Browser:

Diese Grafik wird im zugehörigen Text erklärt

 

 

Ende des Inhaltsbereichs