Avatar billede altschuler Nybegynder
02. marts 2005 - 21:03 Der er 25 kommentarer og
1 løsning

Uploade tekst til ftp fra flash?!

Bonjour mes monsieurs...

Faktisk ved jeg ikke om der er en meget enkel løsning på mit problem, men i korte træk går det ud på at jeg skal have uploaded noget tekst fra en tekstboks, til min ftp server.

Det skulle meget gerne blive sådan at når man trykker upload (se link) så uploader flash teksten i *.txt format til en given server og overskriver filer der i forvejen ligger der (med samme navn).

Her kan i se hvordan det ser ud indtil videre: http://www.altschuler.dk/nyside/editor
Avatar billede barklund Nybegynder
03. marts 2005 - 09:13 #1
Det må være det samme som: http://www.eksperten.dk/spm/595841

Det er i hvert fald lige så møgbesværligt og FTP kan det slet ikke blive :)

--
Morten Barklund
Avatar billede _k Nybegynder
03. marts 2005 - 12:13 #2
Så er det vel heller ikke mere besværligt? Du skal bare lave stort set det hele med serverside scripting, for som Barklund korrekt siger, kan du ikke med ftp. Du poster dit indhold til en asp/php-fil, der åbner din tekstfil og skriver til den.
...at du så ikke i stedet vil bruge en database går imidlertid hen over hovedet på mig.

Teksten kan du poste til serverside scriptet via Flash' LoadVars objekt. Er du på herrens mark, så giv lyd.
Avatar billede barklund Nybegynder
03. marts 2005 - 12:15 #3
Jaok, hvis det bare er tekst, så er det sådan set nemt nok. Jeg tænkte mere på, at det var reelle filer, der skulle op og ned fra den lokale computer til serveren.
Avatar billede _k Nybegynder
03. marts 2005 - 12:22 #4
Ja, fysiske filer holder ingen steder. Men det ser ud som om altschuler bare ønsker at gemme noget tekst fra sin applikation? Og det er jo ikke verdens mest vanskelige opgave.
Avatar billede altschuler Nybegynder
03. marts 2005 - 17:19 #5
ja, det er kun ren tekst. Men jeg må ærligt indrømme at jeg, som _k siger, er pænt langt ude på herrens mark.

Jeg er stort set på bar bund mht PHP, og Flash's LoadVars har jeg heller ikke erfaring med :(

Men det er lidt vigtigt, så jeg håber meget at i gider hjælpe mig lidt i gang. Hæver gerne points til 200 hvis det er ;)
Avatar billede barklund Nybegynder
03. marts 2005 - 17:30 #6
Altså, skal du bare gemme en tekst i en tekstfil, så er det på flash siden:

var gem_txt = new LoadVars();
gem_txt.content = "Her er en tekst, der kommer i en tekstfil";
gem_txt.sendAndLoad("save_txt.php", "POST");

Og i PHP:

<?php
file_put_contents("fil.txt",$_POST['content']);
?>

Og det er jo ikke særlig svært.

Til gengæld er der ingen sikkerhed for, hvad der ligger i filen, da hvem som helst kan gemme ting i denne fil - bare ved at poste til den aktuelle php-fil.

--
Morten Barklund
Avatar billede altschuler Nybegynder
03. marts 2005 - 17:50 #7
sikkerheden betyder ikke rigtig noget ;). Men jeg skla lige se om jeg forstår det her korrekt:

Det første stykke kode putter jeg f.eks. i min upload knap og så laver jeg en php-fil som jeg lægger i samme mappe (på en server som understøtter php).

Og så kommer tekst filen til at ligge som fil.txt der hvor php filen ligger eller hvad? for jeg har en masse mapper de skal ligges ind i osv, så kan man f.eks. skrive:

file_put_contents("/mappe1/mappe2/fil.txt",$_POST['content']);

?
Avatar billede barklund Nybegynder
03. marts 2005 - 17:53 #8
Så du har mange forskellige filer - så propper vi lige stien med i funktionaliteten:

var gem_txt = new LoadVars();
gem_txt.path= "mappe1/mappe2/";
gem_txt.filename = "fil";
gem_txt.content = "Her er en tekst, der kommer i en tekstfil";
gem_txt.sendAndLoad("save_txt.php", "POST");

Og i PHP (indholdet af en fil med navnet save_txt.php i samme mappe som din html og din swf):

<?php
file_put_contents($_POST['path'].$_POST['filename'].".txt", $_POST['content']);
?>

Og se, om ikke det vil virke :)

--
Morten Barklund
Avatar billede altschuler Nybegynder
03. marts 2005 - 18:02 #9
Ah herligt barklund :D.. tester det lidt senere, skla lige lave mad :P
Avatar billede altschuler Nybegynder
03. marts 2005 - 20:48 #10
Der må være ngoet galt. Det virker ikke sådan som jeg tror det skal i hvert fald :).

Scriptet på min upload knap ser nu således ud:

    var gem_txt = new LoadVars();
    gem_txt.path= "/books/drama/";
    gem_txt.filename = "ej";
    gem_txt.content = txt.text;
    gem_txt.sendAndLoad("save_txt.php", "POST");

Og min fulde PHP fil ser sådan her ud:

<html>
<body>
<?php
file_put_contents($_POST['path'].$_POST['filename'].".txt", $_POST['content']);
?>
</body>
</html>


Der er oprettet en mappe kaldet "books", og en undermappe til denne kaldet "drama", i mappen hvor PHP, HTML og swf filen også ligger.

Når man så trykker Upload regner jeg med at det er meningen at systemet burde oprette en fil kaldet ej.txt i /books/drama. Men det virker tilsyneladende ikke :S
Avatar billede altschuler Nybegynder
04. marts 2005 - 09:29 #11
Har lige ændret point til 200, hvis det skulle gøre det mere attraktivt ^__^
Avatar billede barklund Nybegynder
04. marts 2005 - 10:03 #12
Ingen sagde noget om HTML. Ingen HTML i php-filen. Kun det, som jeg skrev. Der findes filer, der ikke er HTML i - SWF filer blandt andet :)

Det burde dog ikke ændre noget. Prøv lige at rette til:

<?php
file_put_contents($_REQUEST['path'].$_REQUEST['filename'].".txt", $_REQUEST['content']);
?>

Og så kan du kalde filen direkte som:

save_txt.php?path=/books/drama&filename=ej&content=Her er en tekst

Så kan du se, om PHP filen giver nogle fejlmeddelelser.
Avatar billede altschuler Nybegynder
04. marts 2005 - 16:54 #13
Jeg får denne meddelse når jeg prøver at kalde filen direkte:

Fatal error: Call to undefined function: file_put_contents() in /home/web/gb0642/bavianfan.dk/save_txt.php on line 2

Og nu ser min php fil også ud som du forslog, men skal jeg så ikke rette linien:
" gem_txt.sendAndLoad("save_txt.php", "POST");"
i flash til:
"gem_txt.sendAndLoad("save_txt.php", "REQUEST");"

Eller har det ingen betydning? Gætter bare ;)
Avatar billede barklund Nybegynder
04. marts 2005 - 17:11 #14
Nejnej, nu finder du på ting...

Men vi har nu fundet ud af, at du har en gammel php-version.

Så skriver vi det lige om til:

<?php
$f = fopen($_REQUEST['path'].$_REQUEST['filename'].".txt","w");
fwrite($f, $_REQUEST['content']);
fclose($f);
?>

Og se, om ikke det giver noget ;)
Avatar billede altschuler Nybegynder
04. marts 2005 - 17:21 #15
Så får jeg den her:

Warning: fopen(): open_basedir restriction in effect. File(/books/dramaej.txt) is not within the allowed path(s): (/home/web/gb0642:/var/tmp:/usr/local/lib/php) in /home/web/gb0642/bavianfan.dk/save_txt.php on line 2

Warning: fopen(/books/dramaej.txt): failed to open stream: Operation not permitted in /home/web/gb0642/bavianfan.dk/save_txt.php on line 2

Warning: fwrite(): supplied argument is not a valid stream resource in /home/web/gb0642/bavianfan.dk/save_txt.php on line 3

Warning: fclose(): supplied argument is not a valid stream resource in /home/web/gb0642/bavianfan.dk/save_txt.php on line 4

:S
Avatar billede barklund Nybegynder
04. marts 2005 - 17:29 #16
Skal heller ikke starte med /:

save_txt.php?path=books/drama&filename=ej&content=Her er en tekst
Avatar billede altschuler Nybegynder
04. marts 2005 - 17:45 #17
woot det virker sgu :D

simpelthen for fedt...

Tusind tak for hjælpen barklund, smid et svar ^__^
Avatar billede barklund Nybegynder
04. marts 2005 - 18:02 #18
Men sikkerheden er ikke så høj - hvem som helst kan overskrive dine filer med hvad som helst...

Og ret endelig REQUEST tilbage til POST i php'en...

--
Morten Barklund
Avatar billede barklund Nybegynder
05. marts 2005 - 12:20 #19
Tark for points :)
Avatar billede altschuler Nybegynder
05. marts 2005 - 12:22 #20
Hmmm, jeg har sådan set stadigvæk et temlig stort problem. Jeg troede det hele virkede for jeg kan godt ændre på filen direkte ved at skrive i browseren.
Men det virker ikke fra flash filen.

Jeg har følgende kode til at gøre arbejdet:

    var gem_txt = new LoadVars();
    gem_txt.path= "books/drama/";
    gem_txt.filename = "ej";
    gem_txt.content = _root.txt.text
    gem_txt.sendAndLoad("save_txt.php", "POST");

Så vidt jeg kan se burde der ikke være noget galt, men det virker bare ikke :S
Avatar billede barklund Nybegynder
05. marts 2005 - 12:30 #21
Ligger save_txt.php i samme mappe som flash og html fil?

Prøv engang at teste den inden fra flash ved at tilføje:

    var gem_txt = new LoadVars();
    gem_txt.path= "books/drama/";
    gem_txt.filename = "ej";
    gem_txt.content = _root.txt.text;
    gem_txt.onData= trace;
    gem_txt.sendAndLoad("http://bavianfan.dk/save_txt.php", "POST");

Hvis det altså er dér, din fil ligger ;)

--
Morten Barklund
Avatar billede altschuler Nybegynder
05. marts 2005 - 12:37 #22
Virker stadigvæk ikke :(, og ja de ligger i samme mappe og ja php-filen ligger dér :P

Det virker lidt som om der bare sker intet...
Avatar billede barklund Nybegynder
05. marts 2005 - 12:40 #23
Hovsa, parametrene er da også forkerte:

gem_txt.sendAndLoad("http://bavianfan.dk/save_txt.php", gem_txt, "POST");

--
Morten Barklund
Avatar billede altschuler Nybegynder
05. marts 2005 - 12:48 #24
wee, så virker det sgu :D. tusind tak for hjælpen endnu engang ^__^
Avatar billede barklund Nybegynder
05. marts 2005 - 12:51 #25
No problemo ;)

Gå bare tilbage til:

    var gem_txt = new LoadVars();
    gem_txt.path= "books/drama/";
    gem_txt.filename = "ej";
    gem_txt.content = _root.txt.text;
    gem_txt.sendAndLoad("http://bavianfan.dk/save_txt.php", null, "POST");

Ingen grund til det ekstra ;)

--
Morten Barklund
Avatar billede altschuler Nybegynder
05. marts 2005 - 14:07 #26
Jeps, det er lidt mere overksueligt :) dog lavede jeg "null" om til "gem_txt" igen, ellers virkede det ikke...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester