ugrás a tartalomhoz

Fájl feltöltés PHP-vel

zoliky · 2008. Ápr. 15. (K), 13.30
Van egy HTML urlapom. Az egyik mezo fajl tipusu es ki tudok valasztani egy fajlot a geprol.
<input type="file" name="pozaprod" size="30" />
Most azt szeretnem ha ezt a fajlot elraktarozna egy altalam keszitet folderbe submit gomb megnyomasa utan. Es a fajl nevet is jo lenne ha megkapnam, szeretnem adatbazisba beirni. Milyen PHP fuggvenyt kell hasznalni ?

Koszonom!
 
1

php.net a barátod

N0r3i · 2008. Ápr. 15. (K), 13.47
http://www.php.net/manual/en/features.file-upload.php

Sőt, még elérhető magyarul is:
http://www.php.net/manual/hu/features.file-upload.php

Teljeskörű leírás a témában, Te is megtalálhattad volna...
2

kerdes

zoliky · 2008. Ápr. 15. (K), 15.49
A sajat gepemen nem kapok hiba uzenetet (localhost). Ha pedig felrakom egy igazi hosting szervere, a kovetkezo error uzenet fogad:

Warning: move_uploaded_file(../images/produse/bg2.gif) [function.move-uploaded-file]: failed
to open stream: Permission denied in /home/prograro/public_html/licenta/admincp/addprod.php on line 52

Hogy lehetne ezt megoldani?
Koszonom!
3

Értelmezd

janoszen · 2008. Ápr. 15. (K), 16.11
Értelmezd a hibaüzenetet. Azt mondja, hogy nincs joga az adott könyvtárba írni. Ergó adj neki jogot. Hogy hogy kell? Attól függ, hogy a szolgáltatód kicsoda-micsoda, de mivel nem kérdeztél okosan, ezért elég nehéz segíteni.
4

koszi!

zoliky · 2008. Ápr. 15. (K), 16.26
Ok es a PHP nem tud a foldernek jogot adni ? A szriptet egy szemely fogja hasznalni akinek fogalma sincs, hogy kell egy foldernek jogot adni FTP-n keresztul. Nekem egyszeru, megnyitom a Total Commandert es Files -> Change atributes. Akkor mukodik. De ezt szeretnem ha PHP is megoldana egyedul.
5

chmod

janoszen · 2008. Ápr. 15. (K), 20.06
chmod parancs. :) De ki hozta létre a directoryt? Ha a PHP akkor elvileg írásjoga is kellene hogy legyen... nézd meg, hogy milyen jogok vannak rajta és ki a tulajdonosa a mappának. Ha meg nem a PHP, akkor az adjon neki jogot, aki létrehozta.
6

Újratöltés

snowybody · 2010. Dec. 27. (H), 10.39
Sziasztok.

Nekem müködik a fájlfeltöltés, viszont van egy probléma ami nagyon zavar. Az űrlapot úgy csináltam meg, hogy vannak kötelező kitöltendő mezők és ha az illető azt nem adja meg, vagyis nem tölti ki, akkor a Küldés gomb lenyomása után a űrlap újból betöltődik, és kiir egy hibaüzenetet, hogy a kötelező mezőket ki kell tölteni, és azokat meg is jelöli. Persze a már kitöltöt mezők értekeit vissza hozza, igy nem kell a felhasználónak újra beirnia. Na itt a kérdés lényege: hogy lehet azt megcsinálni, hogy ilyen esetben a már kiválasztott fájlokat, amik a Küldés gomb hatására fel kellene töltődjenek, ne kelljen újra kiválasztani.
7

Új téma

Poetro · 2010. Dec. 27. (H), 18.06
Új témához indíts új témát. Egyébként pedig mentsd el a feltöltött fájlt, és rakj be egy egyedi kulcsot a form egy hidden mezőjébe. Ezután már session-ben össze tudod kötni a form-ot és a feltöltött fájlt. És ha már itt tartunk, akkor rejtsd el a feltöltés mezőt, és helyette írd ki a feltöltött fájl nevét.

Összefoglalva:
Elmented a feltöltött fájlt. A fájl feltöltés mező helyére kiírod a fájl nevét. Beraksz egy rejtett mezőt ami utal az ideiglenesen feltöltött fájlra (akár egy egyedi session változóval vagy mással.)
8

URL upload

Zolcsika · 2011. Jan. 5. (Sze), 16.42
Hello!

Nekem fájlfeltöltésre lenne szükségem... vagyis képfájlok feltöltésére amit megoldanék ha gépről kellene mert arra találtam rengeteg kódot viszont nekem ún. URL uploadra lenne szükségem, azaz egy kép linket adnának meg egy formon belül és annak értékét letölteni egy szerveren lévő könyvtárba + egyedi névvel látná el.

Kezdő PHP-s vagyok. Találtam egy kódot ami jónak bizonyult a gyakorlatban viszont fejlesztésre szorul.

<?php
$filename=time();
if ($_GET[xfer]) {
if ($_POST[from] == "") {
print "You forgot to enter a url.";
} else {
copy("$_POST[from]", "$_POST[to]");
$size = round((filesize($_POST[to])/1000000), 3);
print "transfer complete.<br>
<a><a href=\"$_POST[from]\">$_POST[from]</a><br>
<a><a href=\"$_POST[to]\">$_POST[to]</a> : $size MB";
}
} else {
print "<form action=\"$PHP_SELF?xfer=true\" method=post>
from(http://): <input name=from>
<input type= hidden value=$filename.jpg name=to><br>
<input type=submit value=\"transload\">";
}
?>


Egy kicsit már belenyúltam, mert alapjában meg kellett adni egy második input mezőben, hogy mi legyen a fájl neve, és azt rejtettem el és beleírattam a time függvény értékét és h .jpg.
Ez így azér elég primitív. A probléma vele az, hogy egyáltalán nincs korlát, így ha egy 1 gb-s fájlt tallóznak bele, azt is megpróbálja áthúzni a szerverre. Ezt kellene orvosolni, azt hogy csak KÉP kiterjesztéseket engedjen és hogy egy adott könyvtárba mentse a képet, ne pedig oda ahol épp a php fájl van.

Meg még van kérdésem ám :)
Már van egy beküldő formom amiben igazából most megvan a mező annak ahova a képlinket illeszthetik viszont ugye az adatbázisba is azt a linket fogja beírni. Van e lehetőségem arra, hogy a két formot egybekeverve egyetlen submit gombal megtörténjen mind a DB-be való beírás mind a távoli fájl áthúzása a saját szerverre.

Segítségetek előre is köszönöm
ÜDv!
9

Új téma

Poetro · 2011. Jan. 5. (Sze), 17.53
Remélem sikerült elolvasni, azt amihez hozzászóltál, és sikerül új témát indítani.
Kezdésnek javaslom tanulj egy kis HTML-t, HTTP protokoll-t, meg egy kicsit több PHP-ra is szükség lesz, ha ezt tényleg te akarod megvalósítani.