За форума > Форум на Web-мастъра

Молба за помощ по PHP!

(1/2) > >>

Borislav:
Здравейте на всички!
Искам да направя Upload-система за файлове с определен тип разширение! Не е необходима База данни, а само папка, в която да се съхраняват файловете на сървъра.
От седмица-две вече се мъча да намеря такъв скрипт, но не успявам... Пробвам различни, но те са или само с upload на снимки, или имат някакви бъгове! Моля тези, които разбират повече от мен да помогнат!
Предварително мерси!

kanadeca:
Ето:


--- Код: ---<?php 
// Максимална големина на файла за качване &#40;сега е 2 ГБ&#41; 
$MAX_SIZE = 268435456; 


$FILE_EXTS = array&#40;'.zip','.jpg','.png','.gif','.doc','.avi','.sub'&#41;; 


// Възможност за триене на качени файлове. При TRUE - може да се трият, при FALSE - не. 
$DELETABLE = false; 



$site_name = $_SERVER['HTTP_HOST'&#93;; 
$url_dir = "http&#58;//".$_SERVER['HTTP_HOST'&#93;.dirname&#40;$_SERVER['PHP_SELF'&#93;&#41;; 
$url_this = "http&#58;//".$_SERVER['HTTP_HOST'&#93;.$_SERVER['PHP_SELF'&#93;; 

$upload_dir = "files/"; 
$upload_url = $url_dir."/files/"; 
$message =""; 


if &#40;!is_dir&#40;"files"&#41;&#41; &#123; 
if &#40;!mkdir&#40;$upload_dir&#41;&#41; 
die &#40;"upload_files директорията не съществува и създаването и е невъзможно."&#41;; 
if &#40;!chmod&#40;$upload_dir,0755&#41;&#41; 
die &#40;"change permission to 755 failed."&#41;; 
&#125; 


if &#40;$_REQUEST[del&#93; && $DELETABLE&#41; &#123; 
$resource = fopen&#40;"log.txt","a"&#41;; 
fwrite&#40;$resource,date&#40;"Ymd h&#58;i&#58;s"&#41;."DELETE - $_SERVER[REMOTE_ADDR&#93;"."$_REQUEST[del&#93;\n"&#41;; 
fclose&#40;$resource&#41;; 

if &#40;strpos&#40;$_REQUEST[del&#93;,"/."&#41;>0&#41;; 
else if &#40;strpos&#40;$_REQUEST[del&#93;,$upload_dir&#41; === false&#41;; 
else if &#40;substr&#40;$_REQUEST[del&#93;,0,6&#41;==$upload_dir&#41; &#123; 
unlink&#40;$_REQUEST[del&#93;&#41;; 
print "<script>window.location.href='$url_this?message=deleted successfully'</script>"; 
&#125; 
&#125; 
else if &#40;$_FILES['userfile'&#93;&#41; &#123; 
$resource = fopen&#40;"log.txt","a"&#41;; 
fwrite&#40;$resource,date&#40;"Ymd h&#58;i&#58;s"&#41;."UPLOAD - $_SERVER[REMOTE_ADDR&#93;" 
.$_FILES['userfile'&#93;['name'&#93;." " 
.$_FILES['userfile'&#93;['type'&#93;."\n"&#41;; 
fclose&#40;$resource&#41;; 

$file_type = $_FILES['userfile'&#93;['type'&#93;; 
$file_name = $_FILES['userfile'&#93;['name'&#93;; 
$file_ext = strtolower&#40;substr&#40;$file_name,strrpos&#40;$file_name,"."&#41;&#41;&#41;; 

// Ако променята макс. големина на качващия се файл променети и по-долното съобщение. 
if &#40; $_FILES['userfile'&#93;['size'&#93; > $MAX_SIZE&#41; 
$message = "Този файл е над 2 GB."; 

else if &#40;!in_array&#40;$file_ext, $FILE_EXTS&#41;&#41; 
$message = "Извинете, $file_name&#40;$file_type&#41; не може да се качи&#40;файла не е поддържан&#41;."; 
else 
$message = do_upload&#40;$upload_dir, $upload_url&#41;; 

print "<script>window.location.href='$url_this?message=$message'</script>"; 
&#125; 
else if &#40;!$_FILES['userfile'&#93;&#41;; 
else 
$message = "Невалиден формат."; 


$handle=opendir&#40;$upload_dir&#41;; 
$filelist = ""; 
while &#40;$file = readdir&#40;$handle&#41;&#41; &#123; 
if&#40;!is_dir&#40;$file&#41; && !is_link&#40;$file&#41;&#41; &#123; 
$filelist .= "<a href='$upload_dir$file'>".$file."</a> - URL&#58; <b>$upload_url$file</b>"; 
if &#40;$DELETABLE&#41; 

$filelist .= " Качен на ".date&#40;"d-m H&#58;i", filemtime&#40;$upload_dir.$file&#41;&#41; 
.""; 
$filelist .= " <a style='text-decoration&#58;none; font-weight&#58;bold' href='?del=$upload_dir".urlencode&#40;$file&#41;."' title='delete'>x</a>"; 
$filelist .="<br>"; 
&#125; 
&#125; 

function do_upload&#40;$upload_dir, $upload_url&#41; &#123; 

$temp_name = $_FILES['userfile'&#93;['tmp_name'&#93;; 
$file_name = $_FILES['userfile'&#93;['name'&#93;; 
$file_name = str_replace&#40;"\\","",$file_name&#41;; 
$file_name = str_replace&#40;"'","",$file_name&#41;; 
$file_path = $upload_dir.$file_name; 


if &#40; $file_name ==""&#41; &#123; 
$message = "Грешно име"; 
return $message; 
&#125; 

$result = move_uploaded_file&#40;$temp_name, $file_path&#41;; 
if &#40;!chmod&#40;$file_path,0777&#41;&#41; 
$message = "change permission to 777 failed."; 
else 
$message = &#40;$result&#41;?"$file_name е качен успешно." &#58; 
"Има грешка с избрания файл."; 
return $message; 
&#125; 

?>


<html>
<head>
<title>Форма за качване</title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
</head>
<body>
<br><br>
<center>
<font color=red><?=$_REQUEST[message]?></font>
<br>
<form name="upload" id="upload" ENCTYPE="multipart/form-data" method="post">
Качи файл <input type="file" id="userfile" name="userfile">
<input type="submit" name="upload" value="Upload">
</form>
<br><b><u>Качени файлове:</b></u><br><br>
По-долу е индексирането на файлове:
<?=$filelist?><br>Този скрипт е направен от
<a style="text-decoration:none" href="http://deam0n.hit.bg">deam0n</a>
</sup></small>
</center>
--- Край на кода ---


П.С. Не съм го правил аз, но го ползвам и е безгрешен.  :arrow:

Borislav:
Трябва ли да се създава отделна папка за файловете?

zipopro:
ПЪРВО: Има една грешка!:

<font color=red><?=$_REQUEST[message]?></font>  Това трябва да е:
<font color=red><? echo $_REQUEST[message] ?></font>

ВТОРО: Бориславе, нагласи кои разширения ще качваш вмомента са:  '.zip','.jpg','.png','.gif','.doc','.avi','.sub' Отделяъ ги със запетая и им слагай Апострофи!
ТРЕТО: папката която трябва да направиш там където е файла е: files със cdmod(мисля че беше) 777
Поздрави и Успех със тая Не много хубава система за Ъплоад.

Borislav:
И последен въпрос... Не искам големината да е 2 GB, а да е примерно, 50 МВ... Как трябва да поправя цифрите тук:

<?php
// Максимална големина на файла за качване (сега е 2 ГБ)
$MAX_SIZE = 268435456;

Навигация

[0] Списък на темите

[#] Следваща страница

Премини на пълна версия