ugrás a tartalomhoz

File feltöltésnél százalék kijelzés

Bici · 2007. Ápr. 4. (Sze), 19.54
Sziasztok!

Van egy egyszerű file feltöltő progim, ami jelenleg egy db html, és egy db. PHP fájlból áll. Tökéletesen működik azt leszámítva, hogy az ember nem tudja, hogy hol tart a feltöltés, és arról sem kep infót, hogy elkezdődött-e a feltöltés.
A php a következőképpen néz ki:
$uploaddir = "files";
print "A fájl feltöltése folyamatban van.";
if (is_uploaded_file($_FILES['userfile']['tmp_name']))
{
	if (chmod($_FILES['userfile']['tmp_name'], 0644))
	{
		if (move_uploaded_file($_FILES['userfile']['tmp_name'],$uploaddir.'/'.$_FILES['userfile']['name']))
		{}
		else
Hogyan tudok százalékkijelzést megvalósítani?

Köszi!
 
1

pure PHP no go

tolmi · 2007. Ápr. 4. (Sze), 21.05
Csupán alap PHP-val nem tudod jelenleg megcsinálni. Ehhez minimum egy PECL extensionra van szükséged, aminek minimum PHP 5.2 kell. A neve uploadprogress.
2

Létezik más is

chipi · 2007. Ápr. 4. (Sze), 21.38
Én írtam hozzá ilyetmit ami azt jelzi ki, hogy a kép vagy adat megy fel a szerverre.

print "<div id=\"toltes\" style=\"display:none\" align=\"center\">";
print "<p align=\"center\">";
print "<img src=\"images/upload.gif\" >";
print "<br><br>";
print "Feltõltés folyamatban...";
print "</p></div>

print "<input type=submit value=Feltöltés!>";
print "onClick=\"document.getElementById('gombok').style.display='none';";
print "this.style.display='none';";
print "document.getElementById('toltes').style.display='inline';\"";
print	">";
print "</div>";
4

??

Bici · 2007. Ápr. 4. (Sze), 21.44
De ez a feltöltés állapotát nem jelzi... Legalábbis nem látom, hogy hogyan.
3

hogyan kell használni?

Bici · 2007. Ápr. 4. (Sze), 21.41
A tárhelyen 5.2.1-es PHP van.
Hogyan kell használni ezt a kiterjesztést?
Elég kezdő vagyok PHP téren, és ilyet még nem csináltam.
Köszi szépen!
5

Így

chipi · 2007. Ápr. 4. (Sze), 21.52
<?php
print "<div id=\"toltes\" style=\"display:none\" align=\"center\">";
print "<p align=\"center\">";
print "<img src=\"images/upload.gif\" >";
print "<br><br>";
print "Feltõltés folyamatban...";
print "</p></div>";
?>
<table width="200" border="0">
<tr>
<td><form name="form1" method="post" action="">
<?php print "<div id=\"gombok\" style=\"display:show\">"; ?>
<input name="nev" type="text" id="nev">
<br>
<?php
print "<input type=submit value=Feltöltés!>";
print "onClick=\"document.getElementById('gombok').style.display='none';";
print "this.style.display='none';";
print "document.getElementById('toltes').style.display='inline';\"";
print ">";
print "</div>";
?>
</form>
</td>
</tr>
</table>
6

oks

Bici · 2007. Ápr. 4. (Sze), 21.54
Köszi szépen, kipróbálom!
7

:)

chipi · 2007. Ápr. 4. (Sze), 22.01
Nincs mit érte.
15

Név szerint hol?

Marcell · 2007. Ápr. 6. (P), 12.49
Ezt már régóta meg akartam kérdezni: melyik tárhelyszolgáltatónál van PHP 5.2 (vagyis te hol vagy)?
8

PHP CGI módban

vbence · 2007. Ápr. 4. (Sze), 23.49
Megoldhatod úgy is, ha egy másik php szkripten vezeted át (kvázi proxyzod) a kérést. A proxy php ha CGI módban fut, akkor még feltöltés közben ellenőrizni tdod, hol tart a folyamat. Nem túl bonyolult feladat. Ha van fsockopen egy ciklus az egész. (A content-length-et megkapod a $_SERVER tömbben - vagy a környezetben - az eddig feltöltött bájtokat meg számolhatja a ciklus).

Azt, hogy legyen prgressbar elinézheti egy ajax hívás. Session-nel szépen megoldható a különböző szkriptek adatceréje.
9

De honnan tudod a méreték

Szekeres Gergő · 2007. Ápr. 5. (Cs), 12.50
Régebben én is foglalkoztam ezzel, de ugye a százalék kijelzéshez kéne tudni a feltöltendő file méretét. Azt viszont honnan tudom meg még azelött, hogy feltöltötte az egészet?
10

példa

gex · 2007. Ápr. 5. (Cs), 12.59
itt a weblaboron is volt már erről szó, azóta annyi változott, hogy a php 5.2 is támogatja a dolgot.
egyik példa, másik példa (hozzá a forráskód)...
12

no patch

vbence · 2007. Ápr. 5. (Cs), 16.31
én php-only megoldásról beszélek itten...
13

én is

gex · 2007. Ápr. 5. (Cs), 16.54
ezek "php-only" megoldások...
14

de még php-onybb

vbence · 2007. Ápr. 5. (Cs), 17.17
ok, akkor pjúr oho-only :)

If anyone has a non-patch PHP only implmentation of some code that gives you upload status please let me know.
11

content legth

vbence · 2007. Ápr. 5. (Cs), 16.29
A fejlécben megkapja a szerver a content-length -et. Ez az egész POST mérete pontosan ennyi bájtnak kell áthaladnia aproxyn, és amikor végeztél, akor van feltöltve. Lehet, hogy egyszerre 2 fájl meg fel egy formban. A POST mérete, akkor a kettejük összege lesz. Így vagy úgy mindenképen rendelheted ezt a hosszt a 100%hoz.
25

hogyan

Bici · 2007. Ápr. 10. (K), 02.51
Üdv Bence!

Lennél olyan kedves leírni kicsit részletesebben, hogy ezt hogy tudom megvalósítani?
Elég, ha a főbb függvényeket/parancsokat leírod, meg hogy szerinted mire figyeljek oda.
A többit megtanulom valami segédletből, mert azért vannak alapvető programozási ismereteim.

Köszönöm Szépen!!
26

ExecCGI

vbence · 2007. Ápr. 10. (K), 10.21
Először ellenőrizd, hogy lehet-e CGI módban futtatni PHP-t. Lehet, hogy van egy külön könyvtár, amit elkészített a tárhelyszolgáltató (általában cgi-bin), vagy lehet, hogy neked kell létrehoznod. Ha normális szolgáltatód van, te is beállíthatod magadnak, nyiss egy könyvtárat, és hozz létre benne egy .htaccess nevű fájlt ezzel a tartalommal:
Options +ExecCGI
AddHandler cgi-script .cgi
Majd hozz létre egy proba.cgi nevű fájlt ezzel:
#!/bin/sh

echo Hello!
Írd be a böngészőbe. Ennek, ha minden jól megy, annyi lesz az eredménye, hogy Hello! Ha valami 500as hibát kapsz vagy a fájl tartalmát látd, akkor ellenőrizd, hogy minden jól csináltál-e. Ha igen, akkor csajnos nincs CGI futtási lehetőséged. Keress másik szolgáltatót.

Ezután hozz létre egy info.cgi nevű fájlt ezzel:
#!/usr/local/bin/php
<?
	phpinfo ();
?>
Egyetlen buktatód lehet, ha a PHP elérési útja nem /usr/local/bin/php - lehet /usr/bin/php vagy bármi más. Ezt ki kell nyomoznod, ha nem menne.

Ha ez okés, akkor folyt. köv.
28

nem megy

Bici · 2007. Ápr. 10. (K), 13.08
Hali!

Létrehoztam a cgi-bin könyvtárat, de nem engedi, hogy .htaccess nevű fájlt hozzak létre benne.
Kipróbáltam a.htaccess-t enged. Nem tetszik neki a pont a fájlnév elején.
A többit megcsináltam, de gondolom a .htaccess file kell a működéshez.
A proba.cgi-t, és az info.cgi-t is a cgi-bin könyvtárba kell rakni?

Köszi!
30

.htaccess

vbence · 2007. Ápr. 10. (K), 15.28
A .htaccessben állítod be, hogy futtassa a cgi-ket, az egészet egy könyvtár alá teszed, hogy a beállítás, ne hasson az egész szájtodra (biztonság). Konkrétan hibát ad a .htaccessre? Nem lehet, hogy csak az ftp kliensed rejti el (nuxiban a pontal kezdődők rejtett fájloknak minősülnek).
31

tc

Bici · 2007. Ápr. 10. (K), 17.48
Hali!

total commanderrel próbáltam, és azt írja ki, hogy Transfer failed. Ha feltöltöm a.htaccess néven, és megpróbálom átnevezni .htaccess-re, akkor meg Rename Failed hibaüzi jön elő.

ui.: Ha windows explorerrel próbálok, akkor ledob az ftp-ről.
32

nálam

Marcell · 2007. Ápr. 10. (K), 22.55
Én is nagyon(!) érdekelt lennék a témában, megcsináltam amit mondtál, de sajna 500-as hibát kapok a proba.cgi-re (a .htaccess használata biztos engedélyezve van, mert rövid webcímek működnek).

Viszont látok olyat a phpinfo()-ban az apache2handler részénél, hogy:
Loaded Modules: mod_cgi
továbbá az Apache Environment résznél olyat, hogy
GATEWAY_INTERFACE: CGI/1.1
Ez jelenthet vmi jót számomra? :)
33

AllowOverride Options

vbence · 2007. Ápr. 11. (Sze), 13.38
Ez annyit jelent, hogy telepítve van a cgi módú php. Ahhoz, hogy futtatni tudjál, viszont be kell állítánod a megfelelő direktívát. Ezt kell ugyebár a htaccess-en keresztül. Több dolgot engedélyezhetnek neked a szerver konfigban, egymástól függetlenül, úgyhogy ha a Rwrite működik, az még semmit nem jelent.

Kérdezz rá, az a biztos.
16

nem megy

Bici · 2007. Ápr. 6. (P), 20.38
Sziasztok!

Feltöltöttem ezt a kódot a tárhelyemre, és a következő hibaüzenet jelenik meg, ha az Upload-ra klikkelek:
Fatal error: Call to undefined function apc_fetch() in /mnt/users/b/i/bici/index.php on line 3
Ez a hibaüzi kb. annyi idő után lejenik meg, amennyi a feltöltési idő. De közben semmilyen progreesbar nem látszik... :( És fel sem megy a file.

Sajna elég kezdő vagyok, úgyhogy nem ismerem ki teljesen magam a kódon. részeket értek belőle, de nem tudom, hogy mit kellene átírni ahhoz, hogy nálam is menjen. A cwi.hu-n van oldalam, és 5.2.1-es PH fut rajta.

Köszi a segítséget!
17

YUI van?

Marcell · 2007. Ápr. 6. (P), 22.41

<script type="text/javascript" src="/yui/yahoo.js"></script>
<script type="text/javascript" src="/yui/event.js"></script>
<script type="text/javascript" src="/yui/dom.js"></script>
<script type="text/javascript" src="/yui/animation.js"></script>
<script type="text/javascript" src="/yui/dragdrop.js"></script>
<script type="text/javascript" src="/yui/connection.js"></script>
<script type="text/javascript" src="/yui/container.js"></script>
Ezek a JS fájlok megvannak a szerveren és be is tölthetőek rendesen? Sztem azért nem láttad a hibaüzenetet csak a feltöltés után, mert ezek nem lettek meghívva rendesen.

A hiba pedig azt akarja jelenteni, hogy nem ismeri meg a függvényt. Ami érdekes, mert PHP 5.2.1-be bele van bundlézva elvileg.. arra nincs tippem. Biztos az a verzió fut ott? phpinfo() mit mond?
19

Jaaaa?!?!

Bici · 2007. Ápr. 7. (Szo), 11.31
Jelen pillanatban csak az index.php file van feltöltve. Most nézem, hogy a YUI könyvtárban kellene lenni pár js fájlnak?? Ezeket honnan lehet letölteni?
És sok helyen látok Yahoo-val kezdődő fv-t, vagy hivatkozást. Mi köze ennek a Yahoo-hoz??
Kösszi!

ui.: A tárhely GY.I.K.-jában azt írják, hogy 5.2.1-es PHP fut... A sima feltöltés műxik, egy másik kóddal, de az progress bar nélküli.
20

phpinfo()-re fel!

Marcell · 2007. Ápr. 7. (Szo), 16.48
Az egy dolog mit írnak ők és egy másik dolog, mit ír ki a phpinfo(). Másrészt ott megnézheted a betöltött modulokat is, meg még sok szép hasznos dolgot.
21

YUI

Marcell · 2007. Ápr. 7. (Szo), 17.02
A Yahoo-nak van egy közkincsé tett kódkönyvtára, amit sokan használnak is (természetesen van dokumentáció is). Hozzáteszem ehhez már nem árt, ha vki jártas webfejlesztő, vagyis érteni kell mi mit csinál, szerver oldal, kliens oldal, adatbázisok, stíluslapok, átviteli lehetőségek! YUI néven fut és innen töltheted le: http://developer.yahoo.com/yui/

Ha belegondolsz a szerveren működött a kód, tehát ott biztos megvannak a JS fájlok is. Mentsd le és kész :)
18

Nincs telepítve

vbence · 2007. Ápr. 7. (Szo), 10.05
Nincs telepítve ez a modul, és (gondolom) ennek a dolga lenne, hogy feltöltés alatt fusson a szkript.
22

még mindig nem megy

Bici · 2007. Ápr. 7. (Szo), 19.24
No, leszedtem a yui-t, és beleraktam egy Yui könyvtárba a szükséges fileokat.
Elvileg így kell, nem?
De így sem megy. Minden ugyanaz marad.
A phpinfo ezt mondja: http://bici.cwi.hu/upload.php

A mintapéldában működik ugyanez a kód... Nálam mi hiányzik még?

Köszi!
23

kérdezz rá

Marcell · 2007. Ápr. 7. (Szo), 19.47
$status = apc_fetch('upload_'.$_POST['APC_UPLOAD_PROGRESS']);
Enélkül a sor nélkül nem fog menni, ezt a függvényt pedig nem ismeri fel. Írj egy levelet a rendszergizdáknak, csak ők tudhatják, hogy miért nem ismeri.
24

korlát

Bici · 2007. Ápr. 10. (K), 02.38
Azt írták, hogy lehet, hogy azért, mert 15MB-ra le van véve a memory limit, és 8MB-ra a PHP-vel feltölthető file méret...
Már csak azt nem értem, hogy akkor a 20kB-os fájlokkal miért nem boldogul?
Ezt a 8MB-os korlátot nem lehet valahogy megkerülni?
Amúgy lementettem a belinkelt oldalt, amin a működőképes feltöltés van, és egy az egyben feltöltöttem a saját tárhelyemre. (Annyi a különbség, hogy van még egy css file a könyvtárban.)
így feltöltés elején megjelenik a progress bar, de nem mozdul, és ugyanúgy nem megy fel a file. Egy 10kB-os fájlal próbáltam, és 10 percig semmit sem csinált, csak kirakta a progress bar-t, és leragadt 0%-nál.
Más tárhelyen ugyanez van, bár máshol nem írják a PHP verzióját.
27

Nyugtass meg...

vbence · 2007. Ápr. 10. (K), 10.25
Ugye a másodperc tört részéig sem hitted el nekik, hogy a "Call to undefined function" című üzenetnek bármi köze lenne a memória limithez...

Amúgy kézzel így tudod változtatni, hacsak nincs letiltva:
ini_set ("memory_limit", "36M");
29

nem

Bici · 2007. Ápr. 10. (K), 13.11
Nem hittem. Azért is írtam, hogy akkor a kis fájlokkal működnie kéne.
Nem vágom miért nem képesek értelmes választ adni.
köszi a tippet!
34

Kérdés

kuszkozs · 2007. Május. 11. (P), 13.19
Sziasztok végigolvastam a hozzászólásokat és javaslatokat, csak az lenne a kérdésem hoy a freeweb-en ez miért nem működik, vagy ott nem is fog?
Uazt a hibaüzenetet kapom
Fatal error: Call to undefined function: apc_fetch() in /disk/raid1/i/n/user/image/proba.php on line 3
Kell még betenni valamit a yui konyvtár is megvan
Köszi
35

Call to undefined function

vbence · 2007. Május. 11. (P), 14.20
A "Call to undefined function" arra utal, hogy nem létezik az illető funkció. (Azaz a php telepítésekor nem tettek kis pipát oda, hogy Install APC functions - vagy hasonló). Annyit tehetsz, hogy a PHP manuálban megnézed, mit csinál az illető függvény, és írsz egyet, ami ugynazt csinálja (vagy más függvényekkel megoldod). Ehhez ugyebár tudni kell PHP-ben, és csak olyan függvényeknél alkalmazható, amik nem alapjában új dolgot jelentenek a PHP-nek.
36

File feltotes ....

lasat · 2007. Május. 20. (V), 13.31
Nos nekem elvileg egy előre készítet sablon feltöltöm van (csak kicsit átbuheráltam) és ehez szeretnék egy jelzőt hogy éppen hol tart a feltöltés csak valahogy nem bírom integrálni :(
tudna valaki segiteni a file :ITT