Stránka 1 z 1

Uploader

Napsal: sob 17. bře 2007, 03:23
od amd.21
potreboval bych nejaky free php uploader.moje pozadavky:
1)at si muzu nastavit maximalni velikost souboru
2)at si muzu nastavit typ uploadovanych souboru (treba jenom .rar)
3)moznost nastaveni do jake slozky se budou soubory ukladat
4)potrebuju,aby po uploadu souboru mi ten uploader napsal link(treba www.domena.cz/mujsoubor.rar) se kterym uz potom budu pracovat dale.
doufam ze jste to pochopili a pomuzete mi.diky

Napsal: sob 17. bře 2007, 15:22
od sheriff.wiggum
Maximální velikost souboru určuje webhoster. A bývá to málo, protože je to nejsnažší cesta k DoS útoku.

Napsal: sob 17. bře 2007, 16:07
od bubanek
A co to takhle naprogramovat.
Není to nic těkého...

Napsal: sob 17. bře 2007, 18:53
od amd.21
nejsem zadny programator zatim,velikost souboru chci omezit treba na 100kb nebo jenom tak,klidne i na 20kb,ale ptrebuj takovy uploader,ktery mi vypise link k tomu,co prave uploadnul...

Napsal: sob 17. bře 2007, 22:22
od €agle
Tohle sem nekdy v davnych dobach nasel na netu, tak treba ti to pomuze

upload.html

Kód: Vybrat vše

<form enctype="multipart/form-data" action="upload.php" method="post">
    <input type="hidden" name="MAX_FILE_SIZE" value="5000000" />
    Choose a file to upload: <input name="userfile" type="file" />
    <input type="submit" value="Upload File" />
</form>
upload.php

Kód: Vybrat vše

<?php
$uploadDir = 'upload/';
$uploadFile = $uploadDir . $_FILES['userfile']['name'];
print "<pre>";
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadFile))
{
    print "File is valid, and was successfully uploaded. \n";
    print "Url is <a href = \"http://www.domena.com/" . $uploadFile;
    print "\">http://www.domena.com/" . $uploadFile . "</a>\n";
    print "Here's some more debugging info:\n";
    print_r($_FILES);
}
else
{
    print "Possible file upload attack!  Here's some debugging info:\n";
    print_r($_FILES);
}
print "</pre>";
?>

Napsal: ned 18. bře 2007, 00:11
od amd.21
super,diky eagle,ted uz jenom vecicky bez kterych to preziju,ale sikly by se :) :
-muzu nejak nastavit,ktery typ souboru muzu uploadovat?(chci jenom .cfg,popripade jeste .rar)
-da se nejak nastavit,aby se soubor neukladal pod jmenem pod kterym se uploaduje,ale aby si dal automaticky nejaky nazev,kdyz bude vice uzivatelu uploadovat soubor se stejnym jmenem tak at se mi to neprepisuje?diky

Napsal: ned 18. bře 2007, 01:30
od €agle
Tak sem to trochu vylepsil, ted je mozny uploadovat jenom .rar a .cfg. Pokud uz dany soubor existuje, tak to tomu novymu automaticky prida na konec cislo (soubor.rar, pak soubor1.rar, soubor2.rar atd)

Kód: Vybrat vše

<?php 
$uploadDir = 'upload/'; 
$uploadFile = $uploadDir . $_FILES['userfile']['name']; 
$filedata = pathinfo($uploadFile);
echo '<pre>';
if(($filedata['extension'] == 'rar') || ($filedata['extension'] == 'cfg'))
{
 $n = 0;
 while(file_exists($uploadFile))
 {
  $n++;
  $uploadFile = $uploadDir . $filedata['filename'] . $n . '.' . $filedata['extension'];
 }
 if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadFile)) 
 { 
  echo "File is valid, and was successfully uploaded. \n"; 
  echo "Url is <a href = \"http://www.domena.com/" . $uploadFile; 
  echo "\">http://www.domena.com/" . $uploadFile . "</a>\n"; 
  echo "Here's some more debugging info:\n"; 
  print_r($_FILES); 
 } 
 else 
 { 
  echo "Possible file upload attack!  Here's some debugging info:\n"; 
  print_r($_FILES); 
 } 
}
else echo "Wrong file type";
echo '</pre>';
?>

Napsal: ned 18. bře 2007, 02:49
od OndraSter
spis nez priponu bych kontroloval mime-typ, pac muzes mit treba klasicky .exe jen tomu zmenis priponu na .rar :roll:

Napsal: ned 18. bře 2007, 04:02
od amd.21
jeste mam dotaz :oops: :jde nejak udelat,aby se to co se vypise jako link k souboru automaticky zapsalo do databaze?

Napsal: ned 18. bře 2007, 12:52
od €agle
OndraSter píše:spis nez priponu bych kontroloval mime-typ, pac muzes mit treba klasicky .exe jen tomu zmenis priponu na .rar :roll:
A jak poznas podle mime cfg soubor? Navic kdyz zmenis priponu, zmeni se ti i mime typ...
amd.21 píše: jeste mam dotaz :jde nejak udelat,aby se to co se vypise jako link k souboru automaticky zapsalo do databaze?
Pred echo "File is valid... vloz:

Kód: Vybrat vše

  $link = mysql_connect("server", "uzivatel", "heslo") or die("Failed to connect to DB: " . mysql_error());
  mysql_select_db("databaze") or die("Failed to select DB"); 
  $query = "INSERT INTO `tabulka` ( `id` , `file` ) VALUES (NULL , 'http://www.domena.com/$uploadFile');";
  $result = mysql_query($query) or die("Failed to process query: " . mysql_error());
  mysql_close($link);
Samozrejme server, uzivatel, heslo, databaze a tabulka si zmen podle sveho. Format tabulky taky prizpusob te tve...

Napsal: ned 18. bře 2007, 16:59
od amd.21
fakt sry sem dement na todle.eagle mohl bys mi to dat cele i s tim ukkladanim do tabulky atd dat dokupy?mam to na virtualnim serveru na svojem PC.
v root slozce mam soubor _mysql.php kde je vypsany server,heslo db atd...,takze jestli bys mi to tam nejak nepridal.
tady je obsah _mysql.php:

Kód: Vybrat vše

<?php
 $host = "localhost";
 $user = "root";
 $pwd = "vertrigo";
 $db = "test";
 define(PREFIX, 'webs_');
?>
takze k tomu souboru upload.php tam pridat includem a nastavi it ukladani do databaze tak,ze tabulka je "webs_user" a sloupec je "cfglink"(typ varchar(255);not null)protoze kdyz sem to tam nastavoval tak mi to vzdycky vyhodilo nejakou chybu.diky moc

Napsal: ned 18. bře 2007, 20:17
od €agle
S trochou stesti:

Kód: Vybrat vše

<?php 
$uploadDir = 'upload/'; 
$uploadFile = $uploadDir . $_FILES['userfile']['name']; 
$filedata = pathinfo($uploadFile); 
echo '<pre>'; 
if(($filedata['extension'] == 'rar') || ($filedata['extension'] == 'cfg')) 
{ 
 $n = 0; 
 while(file_exists($uploadFile)) 
 { 
  $n++; 
  $uploadFile = $uploadDir . $filedata['filename'] . $n . '.' . $filedata['extension']; 
 } 
 if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadFile)) 
 { 
  include '_mysql.php';
  $link = mysql_connect($host, $user, $pwd) or die("Failed to connect to DB: " . mysql_error()); 
  mysql_select_db($db) or die("Failed to select DB"); 
  $query = "INSERT INTO `webs_user` ( `cfglink` ) VALUES ( 'http://www.domena.com/$uploadFile');"; 
  $result = mysql_query($query) or die("Failed to process query: " . mysql_error()); 
  mysql_close($link);
  echo "File is valid, and was successfully uploaded. \n"; 
  echo "Url is <a href = \"http://www.domena.com/" . $uploadFile; 
  echo "\">http://www.domena.com/" . $uploadFile . "</a>\n"; 
  echo "Here's some more debugging info:\n"; 
  print_r($_FILES); 
 } 
 else 
 { 
  echo "Possible file upload attack!  Here's some debugging info:\n"; 
  print_r($_FILES); 
 } 
} 
else echo "Wrong file type"; 
echo '</pre>'; 
?>