[ mika @ 23.04.2001. 13:28 ] @
Pozdrav svima.
Imam jedan problem:kako da posaljem fajl kroz formu? Naime, formu i polje sam deklarisao na sledeci nacin:

<form enctype="multipart/form-data" method="post" action="obrada.php3">

<input type=file accept=image/jpeg name="slika">

<input type=submit value="posalji">
</form>

...i sad, kad pristupim strani obrada.php3 u sourceu koji generise strana obrada.php3 pojavi se neko budjavo ime fajla i putanja sa ekstenzijom .tmp (tipa "C:\WINDOWS\TEMP\tmp22343php.tmp") a ne recimo .jpg ili .gif i putanja koju sam inicijalno uneo. Da li je to zato sto mi se php izvrsava na localhostu i kako se to prevazilazi??? Da li bi generisano ime fajla bilo u redu ako bi mi se script izvrsavao na nekoj drugoj masini a ne na localu????
Molim vas odgovorite jer sam izginuo nocas a nisam provalio kako se to radi!!!! (malo je falilo da radi cekic po monitoru) :(((((((((
Ako ne moze na taj nacin, onda koji su alternativni nacini slanja fajlova preko web forme(preko emaila ili nekako drugacije)?

Unapred zahvalan.
[ naum @ 23.04.2001. 14:02 ] @
Citat:
mika wrote:
<form enctype="multipart/form-data" method="post" action="obrada.php3">

<input type=file accept=image/jpeg name="slika">

<input type=submit value="posalji">
</form>

pojavi se neko budjavo ime fajla i putanja sa ekstenzijom .tmp (tipa "C:\WINDOWS\TEMP\tmp22343php.tmp")


Ideja je da php pokupi fajl i snimi ga u temporary. Ako hoces da fajl dobijes na serveru, moras da kreiras novi i da prekopiras u njega sadrzaj ovog temporary. (na taj nacin funkcionise i na linuxu.

Citat:

Ako ne moze na taj nacin, onda koji su alternativni nacini slanja fajlova preko web forme(preko emaila ili nekako drugacije)?

Unapred zahvalan.


alternativa je slanje forme putem maila... action="mailto:...." ako se ne varam
[ mika @ 24.04.2001. 09:13 ] @

OK, to je sve u redu i sljaka, samo sto ja ne znam kako da prihvatim taj fajl, tj. kad startujem explorer da probam da ga iskopiram, PHP je vec izbrisao taj tmp fajl (pretpostavljam da treba da se prihvati u skriptu i da se iz skripta direktno kopira negde drugde).

E sad, kako da ga prihvatim u skriptu??? mislim, da li postoji komanda u php-u tipa copy (ime_fajla1,ime_fajla) ili tako nesto???

Unapred zahvalan.

[ leka @ 24.04.2001. 12:13 ] @
Miko,
nemoj da se ljutis, ali MORAS da naucis da citas PHP dokumentaciju... Dakle bez ljutnje to sto pitas u PHP manualu je TAKO LEPO objasnjeno da zaista ne razumem zasto te mrzi da procitas taj deo o upload-u fajlova pomocu PHP-a...

Da te uputim - idi na www.php.net, skini manual (imas u vise razlicitih formata - preporucujem ti da skines ZIP fajl sa HTML-ovima) i procitaj deo koji se nalazi u "Features" delu manuala i koji se zove "Chapter 19. Handling file uploads"

Taj manual je MUST TO READ za sve ljude koji nameravaju da se bave PHP-om!

Evo deo koji prica o onome sto ti pitas:


KOD1:
Code:

<FORM ENCTYPE="multipart/form-data" ACTION="_URL_" METHOD=POST>
<INPUT TYPE="hidden" name="MAX_FILE_SIZE" value="1000">
Send this file: <INPUT NAME="userfile" TYPE="file">
<INPUT TYPE="submit" VALUE="Send File">
</FORM>



KOD2:
Code:

<?php 
if (is_uploaded_file($userfile)) {
    copy($userfile, "/place/to/put/uploaded/file");
} else {
    echo "Possible file upload attack: filename '$userfile'.";
}
/* ...or... */
move_uploaded_file($userfile, "/place/to/put/uploaded/file");
?>



KOD3 (starije verzije PHP-a):
Code:

<?php 
/* Userland test for uploaded file. */ 
function is_uploaded_file($filename) {
    if (!$tmp_file = get_cfg_var('upload_tmp_dir')) {
        $tmp_file = dirname(tempnam('', ''));
    }
    $tmp_file .= '/' . basename($filename);
    /* User might have trailing slash in php.ini... */
    return (ereg_replace('/+', '/', $tmp_file) == $filename);
}

if (is_uploaded_file($userfile)) {
    copy($userfile, "/place/to/put/uploaded/file");
} else {
    echo "Possible file upload attack: filename '$userfile'.";
}
?>



Citat:
mika wrote:

OK, to je sve u redu i sljaka, samo sto ja ne znam kako da prihvatim taj fajl, tj. kad startujem explorer da probam da ga iskopiram, PHP je vec izbrisao taj tmp fajl (pretpostavljam da treba da se prihvati u skriptu i da se iz skripta direktno kopira negde drugde).

E sad, kako da ga prihvatim u skriptu??? mislim, da li postoji komanda u php-u tipa copy (ime_fajla1,ime_fajla) ili tako nesto???

Unapred zahvalan.


[ mika @ 24.04.2001. 14:43 ] @

Prvo, vrlo sam Vam zahvalan na iscrpnom odgovoru. To za dokumentaciju je stvarno na mestu i prihvatam sve kritike.Procitao bih ja to, samo mi je ovaj posao iskrsao hitno i trebalo mi je -INSTANT- resenje SAMO ZA DANAS!!! (Kostur programa koji je upotrebljiv za danas, ne i za sutra-jednostavno samo demonstracija rada)

Kritiku sam shvatio i upravo skidam commented manual sa php.net i sledecih 10 dana (i noci) provodim na citanju!!!

10x a lot.

PHP rulez!