Autor Zpráva
joker0cz
Profil *
Dobrý den,
mám tento problém protřeboval bych nějak do svej stránek k uploadu udělat upload meter kterej by lidem ukázal kolik toho nahráli, třeba jako je to tady

script kterej tam mám vypadá takhle
index.php
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
  <meta http-equiv="content-type" content="text/html; charset=utf-8">
  <meta name="generator" content="PSPad editor, www.pspad.com">;
    <title>DOWNLOAD</title>
  </head>
  <body>
  <form action="index.php" method="post" enctype="multipart/form-data">
    <input type="file" name="fupload">
    <input type="submit" value="Nahrát">
  </form>
  <?php
  define("PREFIX", "awdefr_");  //7pismeny prefix
  function pekne_url($nadpisek) {
    $url = $nadpisek;
    $url = preg_replace('~[^\\pL0-9_]+~u', '-', $url);
    $url = trim($url, "-");
    $url = iconv("utf-8", "us-ascii//TRANSLIT", $url);
    $url = strtolower($url);
    $url = preg_replace('~[^-a-z0-9_]+~', '', $url);
    return $url;
  }
  function utf2ascii($text)   
    { 
        $return = Str_Replace( 
                        Array("á","č","ď","é","ě","í","ľ","ň","ó","ř","š","ť","ú","ů","ý ","ž","Á","Č","Ď","É","Ě","Í","Ľ","Ň","Ó","Ř","Š","Ť","Ú","Ů","Ý","Ž") ,

                        Array("a","c","d","e","e","i","l","n","o","r","s","t","u","u","y ","z","A","C","D","E","E","I","L","N","O","R","S","T","U","U","Y","Z") ,                        
                        $text); 
        $return = StrToLower($return); //velká písmena nahradí malými. 
        return $return;  
		

       /**
         * Get the status of all uploads passed in
         */
        function get_status($ids) {
                $ret = array();
                foreach($ids as $id => $upId) {
                        $ret[$id] =  new stdClass();

                        $tmp = upload_progress_meter_get_info($upId);
                        if (!is_array($tmp)) {
                                $ret[$id]->message = "Complete";
                                $ret[$id]->percent = "100";
                                break;
                        }

                        if ($tmp['bytes_total'] < 1) {
                                $percent = 100;
                        }
                        else {
                                $percent = round($tmp['bytes_uploaded'] / $tmp['bytes_total'] * 100, 2);
                        }

                        if ($percent == 100) {
                                $ret[$id]->message = "Complete";
                        }

                        $eta            = sprintf("%02d:%02d", $tmp['est_sec'] / 60, $tmp['est_sec'] % 60 );
                        $speed          = $this->_formatBytes($tmp['speed_average']);
                        $current        = $this->_formatBytes($tmp['bytes_uploaded']);
                        $total          = $this->_formatBytes($tmp['bytes_total']);

                        $ret[$id]->message = "$eta left (at $speed/sec) $current/$total($percent%)";
                        $ret[$id]->percent = $percent;
                }
                return $ret;
        }

    }
  if (isset($_FILES['fupload']))
  {
    $slozka = "upload"; // Zde si napište svojí složku, do které se budou soubory ukládat (bez lomítka)
    $nazev = PREFIX.date("Ymd").date("Hi").pekne_url(utf2ascii($_FILES['fupload']['name'])).".".strtolower(pathinfo($_FILES['fupload']['name'], PATHINFO_EXTENSION)); 
    $cil = $slozka . "/" .$nazev; // Toto je promìnná $cil, která obsahuje adresáø, kde se má soubor uploadovat a taky název souboru.
    $nazev_souboru = $_FILES['fupload']['tmp_name']; // Zjistí doèastné umístìní souboru
    $copy = move_uploaded_file($nazev_souboru, $cil) // A tady zkopíruje soubor z doèastného umístìní do cílového souboru a složky
      or die ("Přenesený soubor nelze zkopírovat ".PREFIX.$_FILES['fupload']['tmp_name'].date("Ymd").date("Hi")); // A pokud se nepovede, tak vypíše tuto hlášku
    chmod ($cil, 0644); // Ještì na soubor vyhodíme funkci chmod, která zmìní jeho práva na maximum, pokud by soubor psal chybu zmìòte 0644 na 0777
    if($copy == true){ // Pokud se kopírování provede úspìšnì
      echo "Soubor " .$_FILES['fupload']['name']. " byl úspěšně nahrán na server.<br /> Stáhnout: <a href='download.php?soubor=".substr($nazev, 7)."' title='Stáhnout'>".substr($nazev, 19)."</a><br />";
    }else{
      echo "Soubor nemohl být nahrán.\nPočet chyb: " . $_FILES['fupload']['error'];
    }
  }
?>
 

  </body>
</html>


a download.php:
<?php
define("PREFIX", "awdefr_");  
if(isset($_GET["stahni"])){
if(file_exists("upload/".PREFIX.$_GET["stahni"])){
header("Content-Disposition: attachment; filename=".substr($_GET["stahni"], 12));   
header("Content-Type: application/force-download");
header("Content-Type: application/octet-stream");
header("Content-Type: application/download");
header("Content-Description: File Transfer");            
header("Content-Length: " . filesize("upload/".PREFIX.$_GET["stahni"]));
readfile("upload/".PREFIX.$_GET["stahni"]);
}
else {echo "Soubor nenalezen.";}
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
  <meta http-equiv="content-type" content="text/html; charset=utf-8">
  <meta name="generator" content="PSPad editor, www.pspad.com">;
  <?php 
  if(isset($_GET["soubor"])){
  echo '<meta http-equiv="refresh" content="3;URL=?stahni='.$_GET["soubor"].'">';
  }
  ?>
  <title>DOWNLOAD</title>
  </head>
  <body>
  <?php 
  if(isset($_GET["soubor"])){
  echo "zobrazení reklamy";
  }
  ?>
  </body>
</html>


Newíte jak na to pls ?
joker0cz
Profil *
Zkoušel jsem všechno možný ale nikdy nic nefungovalo sem v php totiž ješte trochu začátečník pls ?
fuckin
Profil
v php toto udělat nelze (musel bys mit napr. plugin do APC, ktery ti bude vyhazovat status uploadu, včetně progressu), co se týče tvé ukázky, je to udělané v perlu.

Inspiraci hledej spise u uploadify.com, tam je to udělané kombinací flashe + js + php
joker0cz
Profil *
jo aha jo o je super akorát já furt nwm jak tento upload meter (uploadify.com) dostat do toho pearlu tak aby to fungovalo. Poradíte pls ?
fuckin
Profil
Tipuju, že vlastně nevíš co chceš. Pearl ti z největší pravděpodobností server podporovat nebude.

Chceš to přes PHP + JS popř. Flash. Tedy čerpej know-how z mé ukázky.
joker0cz
Profil *
Jo sorry já sem s tim pearlem blbě sem se vyjádřil (samozřejmě sem měl namysli php :D). Akorát nwm co myslýš tím know-how ? Potřeboval bych poradit jak to do tady toho skripu to připojit jak sem pochopil měl bych do indexu umístit tohle ne ? :

<script type="text/javascript" src="/example/scripts/jquery-1.3.2.min.js"></script>
<script type="text/javascript" src="/example/scripts/swfobject.js"></script>
<script type="text/javascript" src="/example/scripts/jquery.uploadify.v2.1.0.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
	$("#uploadify").uploadify({
		'uploader'       : 'scripts/uploadify.swf',
		'script'         : 'scripts/uploadify.php',
		'cancelImg'      : 'cancel.png',
		'folder'         : 'uploads',
		'queueID'        : 'fileQueue',
		'auto'           : true,
		'multi'          : true
	});
});
</script>
</head>

<body>
<div id="fileQueue"></div>
<input type="file" name="uploadify" id="uploadify" />
<p><a href="javascript:jQuery('#uploadify').uploadifyClearQueue()">Zrušit všechny uploady</a></p>
</body>
</html>


a potom ty zbylí soubory ne ?
no akorát prostě nwm kam do jaký části to umístit tak aby to šlapalo.
fuckin
Profil
Postupuj dle toho příkladu. Edituj ho po malých krocích a testuj, ať poznáš kde je chyba. Nedělej to naopak, že do svého souboru zkopíruješ ten skript!! Z příkladu udělej ten svůj, nikoli naopak.
AM_
Profil
joker0cz:
no akorát prostě nwm kam do jaký části to umístit tak aby to šlapalo.
jinými slovy neumíš programovat a metodou pokus-omyl to chceš nějak zpytlíkovat, aby to šlo. Zvaž, jestli by nestálo za to se nejdříve naučit programovat, pochopit principy strukturovaného imperativního programování PHP, a pak teprve se pouštět do složitějších věcí. Bude to skýtat mnoho výhod:
- budeš vědět, co děláš a proč to tak funguje
- nebudeš muset prosit jiné lidi, aby to dělali za tebe
- možná nebudeš vědět, že Pearl Harbor byl napaden 1941, ale budeš vědět, že existuje jazyk Perl, ve kterém lze psát dynamické weby podobně jako v PHP, ale jeho oblíbenost a podpora napříč hostingy je o pár řádů níže.

//P.S. na tvojí otázku by šlo odpovědět "php je klasické strukturované programování, takže nejlépe každý příkaz umísti do té části kódu, kde se má provést.
//P.P.S. tvůj download skript přidá na konec každého stahovaného souboru HTML reklamu (ano, nejenže se při stahování zobrazí, ale ten kus HTML se i připíchne na konec všech souborů).
//P.P.P.S. ten tvůj prefix je úplně k ničemu, ono stačí, když uživatel nebude úplně hloupý a přidá parametr "stahni", a vůbec nemusí řešit, jak se jmenuje originální soubor.
//P.P.P.P.S. to už je nejméně druhé vlákno na tohle téma. To, že ti na něj nikdo neodpověděl, nejspíše znamená, že se špatně ptáš nebo že zkušení programátoři usoudili, že buď se musíš nejdříve programovat naučit, nebo by to stejně museli dělat celé za tebe, protože ty nemáš sebemenší ponětí, jak to funguje.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0