Upload einer Datei mit BSP / !!!dringend!!!

BusinessServerPages; Erstellung von Webapplikationen.

Upload einer Datei mit BSP / !!!dringend!!!

Postby Lilia3936 » Thu Mar 27, 2003 10:25 am

Hallo zusammen,

wie kann ich ein Upload einer Datei vom Clienten mit einer BSP-Aplikation
realisieren. Der Client hat kein Sapgui nur einen IE.

Danke für Eure Hilfe :?
Lilia3936
..
..
 
Posts: 10
Joined: Thu Mar 27, 2003 10:22 am

Postby Walter4536 » Thu Mar 27, 2003 10:38 am

Hi Rene,

hier solltest Du alles notwendige finden:

http://help.sap.com/saphelp_webas620sp9 ... ameset.htm

Pfad: Web-Applikationen und Business Server Pages -> Programmierumfeld -> File-Upload in BSP-Applikationen

wichtig: form method muss 'POST' sein und enctype 'multipart/form-data'

Gruß,
Steff
Walter4536
...
...
 
Posts: 315
Joined: Mon Dec 02, 2002 12:09 pm

Postby Ava146 » Thu Mar 27, 2003 11:03 am

Das mit dem Upload würde mich auch stark interessieren.

Ich kann aber nirgens erkennen, wo die Dateien abgelegt werden, die man hochlädt!

Gruss Aga
Ava146
..
..
 
Posts: 26
Joined: Fri Feb 14, 2003 12:25 pm

Postby Ava146 » Thu Mar 27, 2003 11:03 am

Das mit dem Upload würde mich auch stark interessieren.

Ich kann aber nirgens erkennen, wo die Dateien abgelegt werden, die man hochlädt!

Gruss Aga
Ava146
..
..
 
Posts: 26
Joined: Fri Feb 14, 2003 12:25 pm

Postby Walter4536 » Thu Mar 27, 2003 11:26 am

Hi Aga,

im OnInputProcessing kannst Du Dir den Bytestream des hochgeladenen Files geben lassen.
Ich denke die HTML-Seite ist klar: Du brauchst ein Tag in der Art: <input type=file name=myfile ...>
Dann einen Submit-Button, mit entsprechendem event im OnInputProcessing. Dort kannst Du Dir dann das File wie folgt holen (siehe Beispiel in der Doku):
Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
  1. * file upload and echo
  2.  
  3.     data: entity         type ref to if_http_entity,
  4.  
  5.           file           type xstring,
  6.  
  7.           content_type   type string,
  8.  
  9.           content_length type string,
  10.  
  11.           num_multiparts type i,
  12.  
  13.           i              type i value 1,
  14.  
  15.           doEcho         type string,
  16.  
  17.           value          type string.
  18.  
  19. *   find multipart containing file
  20.  
  21.     num_multiparts = request->num_multiparts&#40; &#41;.
  22.  
  23.     while i <= num_multiparts.
  24.  
  25.       entity = request->get_multipart&#40; i &#41;.
  26.  
  27.       value = entity->get_header_field&#40; '~content_filename' &#41;.
  28.  
  29.       if not value is initial.
  30.  
  31. *       found a file!
  32.  
  33.         navigation->set_parameter&#40; name  = 'content_filename'
  34.  
  35.                                    value = value &#41;.
  36.  
  37.         content_type = entity->get_header_field&#40; 'Content-Type' &#41;.
  38.  
  39.         navigation->set_parameter&#40; name  = 'content_type'
  40.  
  41.                                    value = content_type &#41;.
  42.  
  43. *       get file content
  44.  
  45.         file = entity->get_data&#40; &#41;.
  46.  
  47. *       get file size
  48.  
  49.         content_length = xstrlen&#40; file &#41;.
  50.  
  51.  
  52. ...
  53.  
GeSHi ©


Gruß,
Steff
Walter4536
...
...
 
Posts: 315
Joined: Mon Dec 02, 2002 12:09 pm

Postby Aurora145 » Thu Mar 27, 2003 12:55 pm

Ja, soweit so gut, aber wie und wo packe ich das dann hin, ich will mir das ja vielleicht später nochmal angucken...

In eine Datenbanktabelle,
oder irgendein verzeichnispfad?

Bis jetzt bekomme ich ja "nur" die daten des Files aber noch ist das file ja nirgens gesichert.

Gruss Aga
Aurora145
.
.
 
Posts: 9
Joined: Thu Mar 27, 2003 12:55 pm

Postby Walter4536 » Thu Mar 27, 2003 1:06 pm

Hi Aga,

ach so meinst Du das. Na ja, das File könnte man im einfachsten Fall im Business Document Service abspeichern (Transaktion OAER). Dazu gibt es eine API mit entsprechenden Bausteinen zum Abspeichern solcher Files und auch wieder zum Auslesen. Näheres müßte sich in der Doku finden lassen, weiß es leider nicht auswendig wie die Bausteine heissen.

Dann gibt es in neueren Releasen den KPRO. Damit kannst Du dasselbe machen. Findet sich im Paket 'SO', Funktionsgruppe 'SOI1'. Ist ganz gut dokumentiert (z.B. FB 'SO_DOCUMENT_INSERT_API1')

Schlussendlich kann man natürlich auch hergehen und sich eine entsprechende Funktionalität selbst 'basteln'. Im Prinzip braucht man nur eine Tabelle für Filenamen, Mimetype, Beschreibung evlt. ID und eine Tabelle die den eigentlichen Content enthält. Dann kann man den Bystream z.B. in einen XSTRING ablegen bzw. in mehrere Tabellenzeilen vom Typ 'RAW'. Dann noch entsprechende Fubas zum Lesen und Schreiben.

Gruß,
Steff
Walter4536
...
...
 
Posts: 315
Joined: Mon Dec 02, 2002 12:09 pm

Postby Lilia3936 » Thu Mar 27, 2003 1:24 pm

Hallo zusammen,

Danke für die Hilfe, mein Problem ist gelöst.

PS: meine Datei legen ich ins KPRO ab

Gruß Rene
Lilia3936
..
..
 
Posts: 10
Joined: Thu Mar 27, 2003 10:22 am

Postby Axel147 » Thu Mar 27, 2003 2:12 pm

Jo, jetzt kommen wir der Sache näher, danke :)

Rene, kannst du mir mal deinen Code schicken, oder hier reinstellen, wie du die Dinger wegspeicherst?

Wäre klasse!!!


Gruss Aga
Axel147
.
.
 
Posts: 2
Joined: Fri Mar 21, 2003 1:59 pm

Postby Jolie2216 » Fri Mar 28, 2003 5:28 pm

Hi,

für die KPRO Ablage gehe ich wie folgt vor:
call function 'SCMS_XSTRING_TO_BINARY'
EXPORTING
BUFFER = file
* APPEND_TO_TABLE =
IMPORTING
OUTPUT_LENGTH = lv_output_length
TABLES
BINARY_TAB = lt_binary_tab.

Damit aus dem "file"/xstring eine "binary_tab" machen, umformatieren und schließlich mit "CVAPI_DOK_CHECKIN" (WICHTIG: PF_CONTENT_PROVIDE = 'TBL') für das entsprechende Dokument einchecken.

Gruß Jens W
Jolie2216
..
..
 
Posts: 38
Joined: Fri Mar 28, 2003 5:28 pm

Next

Return to BSP + BHTML

Who is online

Users browsing this forum: No registered users and 3 guests

cron