Duurzame nerd. Veel comfort en weinig verbruiken. Zuinig aan doen voor de toekomst.
1
| Content-Disposition: attachment; filename=blaat.txt |
Een wappie is iemand die gevallen is voor de (jarenlange) Russische desinformatiecampagnes.
Wantrouwen en confirmation bias doen de rest.
-- daadwerkelijke streaming naar de client
owa_util.mime_header( 'Content-Type: application/zip; Content-Disposition: attachment; filename=test.zip', FALSE );
owa_util.http_header_close;
Duurzame nerd. Veel comfort en weinig verbruiken. Zuinig aan doen voor de toekomst.
Klaar voor een nieuwe uitdaging.
knipje code daaruit:
1
2
3
4
5
6
7
8
9
10
11
12
| create or replace Procedure PROCESS_DOWNLOAD
IS v_filename varchar2(255);
BEGIN
v_filename := LTRIM(owa_util.get_cgi_env('PATH_INFO), '/');
select name into v_filename
FROM www_document
WHERE UPPER(name) = UPPER(v_filename);
wpg_docload.download_file(v_filename);
END PROCESS_DOWNLOAD; |
Als commentaar erbij staat nog:
This is also stated in the "Oracle 9i Application Server Using the PL/SQL Gateway Release 1 (v1.0.2.2)" in section 1.7.8 "File Download".
Who is John Galt?
dat gaan we proberen!
en inderdaad we gebruiken Ias9i
Duurzame nerd. Veel comfort en weinig verbruiken. Zuinig aan doen voor de toekomst.
Waarom kan je daar niet gewoon met je otn login in?Op woensdag 13 maart 2002 12:45 schreef justmental het volgende:
Hier staat de oplossing (als je iAS9 gebruikt).
Is dat voor downloaden NAAR je server toe, of voor het uploaden VAN je server af?knipje code daaruit:
[edit]
Ja dus
Verwijderd
voor metalink moet je een support contract hebbenOp woensdag 13 maart 2002 12:51 schreef ACM het volgende:
[..]
Waarom kan je daar niet gewoon met je otn login in?
[..]
Ah, ok...Op woensdag 13 maart 2002 12:52 schreef sjako het volgende:
voor metalink moet je een support contract hebben
Lekker handig om daar een link naar te plaatsen hier dan
Verwijderd
mja, meeste mensen die met oracle werken hebben een support contract (zit bij de prijs in)Op woensdag 13 maart 2002 12:53 schreef ACM het volgende:
[..]
Ah, ok...
Lekker handig om daar een link naar te plaatsen hier dan
Ja maar, ik niet...Op woensdag 13 maart 2002 12:56 schreef sjako het volgende:
mja, meeste mensen die met oracle werken hebben een support contract (zit bij de prijs in)
Niet dat ik het dan ook zoveel gebruik (niet eens geinstalleerd hier thuis), maar is toch vaak wel interessant om dat soort uitleg te bekijken.
Op woensdag 13 maart 2002 12:53 schreef ACM het volgende:
Ah, ok...
Lekker handig om daar een link naar te plaatsen hier dan
Als ik het hele stuk ge-c/p-ed had hierheen vind Oracle dat waarschijnlijk weer niet leuk.
Who is John Galt?
ik heb een file in de db staan die gedownload wordt..
en de wpg_docdownload is voor bestanden op de webserver en niet in db.
ik heb wel een oplossing maar om nu te zeggen dat ik daar zo blij mee ben Nee.
ik roep een download procedure aan die dynamisch een package aanmaakt met execute immediate (package naam = bestandsnaam) en 1 procedure die als naam de extentie van het te downloaden bestand heeft.
via een redirect_url roep ik deze zojuist aangemaakte procedure aan. et voila bestandsnaam staat goed.
alleen heb ik gaandeweg nog steeds problemen met het genereren van de package, soms maaktie m wel aan, vaak niet (terwijl de code correct is en werkt (als ik m statisch maak)
Duurzame nerd. Veel comfort en weinig verbruiken. Zuinig aan doen voor de toekomst.
Verwijderd
voor database [Oracle] gerelateerde zaken is AskTom een goede maar relatief onbekende plek om info te zoeken.
Tom kan het helder en praktisch uitleggen.
ipv owa_util.mime_header te gebruiken doe ik het nu zo :
htp.prn('Content-type: application/zip'|| chr(13) );
htp.prn('Content-disposition: filename=d'|| p_dienstnummer ||'.html'||chr(13) );
owa_util.http_header_close;
dit werkt perfect !
thnx all!
Duurzame nerd. Veel comfort en weinig verbruiken. Zuinig aan doen voor de toekomst.
Ik moet niet wat anders gaan doen als ik nog wat aan het typen ben
Who is John Galt?
bestandsnaam is nu netjes, bestand blijft leeg.
aargh!
0 bytes steeds
Duurzame nerd. Veel comfort en weinig verbruiken. Zuinig aan doen voor de toekomst.
Toon uw codeOp woensdag 13 maart 2002 13:45 schreef mkleinman64 het volgende:
Hmm probleem nr 2.
bestandsnaam is nu netjes, bestand blijft leeg.
aargh!
0 bytes steeds
Who is John Galt?
htp.prn('Content-Disposition: filename=d' || to_char( p_dienstnummer ) ||'.zip' || chr(13) );
owa_util.http_header_close;
BEGIN
LOOP
dbms_lob.read( l_data, l_amt, l_off, l_raw );
htp.prn( l_raw );
l_off := l_off + l_amt;
END LOOP;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
NULL;
END;
khoop dat het een beetje te lezen valt
Duurzame nerd. Veel comfort en weinig verbruiken. Zuinig aan doen voor de toekomst.
Je komt niet meer uit de loopOp woensdag 13 maart 2002 13:50 schreef mkleinman64 z'n code:
Je moet eerst de length opvragen met dbms_lob.getlength en de loop uitgaan na het einde van het bestand.
Een voorbeeldje van mezelf:
1
2
3
4
5
6
7
8
9
| v_len := dbms_lob.getlength(v_ico_file);
owa_util.mime_header (v_mime_type, FALSE);
owa_util.http_header_close;
while v_offset < v_len
loop
dbms_lob.read(v_ico_file,v_buf_size,v_offset,v_buffer);
htp.prn (utl_raw.cast_to_varchar2(v_buffer));
v_offset := v_offset+v_buf_size;
end loop; |
Who is John Galt?
oplossing is ook al gevonden btw
me mimeheaders kloptten niet.
-- daadwerkelijke streaming naar de client
owa_util.mime_header( 'Content-Type: application/zip'|| chr(13) ||'Content-Disposition: filename=d' || to_char( p_dienstnummer ) ||'.html', FALSE );
die regel lost alles op :-)
* mkleinman happy now :-)
Duurzame nerd. Veel comfort en weinig verbruiken. Zuinig aan doen voor de toekomst.
Met als gevolg dat je NULL returnedOp woensdag 13 maart 2002 14:07 schreef mkleinman64 het volgende:
Je komt wel uit die loop, want als je meer data selecteerd uit een lob dan er in zit krijg je een no data found exceptie en daar klapt hij uit de loop.
De
BEGIN
LOOP
ENDLOOP
EXCEPTION
WHEN NO_DATA_FOUND THEN NULL
END;
is puur voor het doorlopen van je lob en wanneer je klaar bent dan ben je klaar :-) anders zou je een no_data_found exception krijgen en die vang je zo dus af.
Duurzame nerd. Veel comfort en weinig verbruiken. Zuinig aan doen voor de toekomst.
Foei, foei, dirtyOp woensdag 13 maart 2002 14:27 schreef mkleinman64 het volgende:
niet null returnen maar gewoon bij je exception zonder extra sjit uit je block returned :-)
Wordt je code niet nagekeken door iemand anders?
Who is John Galt?
Ahzo, maar echt netjes coden is het natuurlijk nietOp woensdag 13 maart 2002 14:27 schreef mkleinman64 het volgende:
niet null returnen maar gewoon bij je exception zonder extra sjit uit je block returned :-)
Als je met een simpele handeling een exception kan voorkomen moet je dat zeker doen, zodat de exception alleen op kan treden in situaties die je zelf niet (echt) in de hand hebt...
Duurzame nerd. Veel comfort en weinig verbruiken. Zuinig aan doen voor de toekomst.
Verwijderd
Vaak gebruiken ze bepaalde exceptions ook om naar eerdere stukken in de code te gaan.
Soort van GOTO.
Duurzame nerd. Veel comfort en weinig verbruiken. Zuinig aan doen voor de toekomst.