2011-08-21 3 views
0

나는 사용자가 나에게 zip 파일을 제출할 수 있도록 노력하고있어. 또한 갈등이 없도록 이름을 바꾸고 싶습니다.업로드하고 이름을 바꿔서 PHP로

이 코드는 zip 파일 확장자에서 작동하지 않습니다. 나는 이유를 알 수 없다. 만약 내가 사진이나 뭔가 완벽하게 작동하는 확장 기능을 변경합니다.

<?php 

define ("MAX_SIZE","1000000"); 

function getExtension($str) { 
$i = strrpos($str,"."); 
if (!$i) { return ""; } 
$l = strlen($str) - $i; 
$ext = substr($str,$i+1,$l); 
return $ext; 
} 

$errors=0; 

if(isset($_POST['Submit'])) 
{ 

$image=$_FILES['image']['name']; 

if ($image) 
{ 

$filename = stripslashes($_FILES['image']['name']); 

$extension = getExtension($filename); 
$extension = strtolower($extension); 

if (($extension != "zip")) 
{ 

echo '<h1>Unknown extension!</h1>'; 
$errors=1; 
} 
else 
{ 

$size=filesize($_FILES['image']['tmp_name']); 

if ($size > MAX_SIZE*1024) 
{ 
echo '<h1>You have exceeded the size limit!</h1>'; 
$errors=1; 
} 

$image_name=time().'.'.$extension; 

$newname="./zips/".$image_name; 

$copied = copy($_FILES['image']['tmp_name'], $newname); 
if (!$copied) 
{ 
echo '<h1>Copy unsuccessfull!</h1>'; 
$errors=1; 
}}}} 

if(isset($_POST['Submit']) && !$errors) 
{ 
header('Location: uploads.html') ; 
} 
?> 


<form name="newad" method="post" enctype="multipart/form-data" action="upload.php"> 
<table> 
<tr><td><input type="file" name="image"></td></tr> 
<tr><td><input name="Submit" type="submit" value="Upload Zip"></td></tr> 
</table> 
</form> 
+0

당신의 함수'getExtension()'은 조금 이상합니다. 'this.is.a.testcase.zip'과 같은 파일 이름은 어떨까요? 현재 처리중인 파일 유형을 찾으려면 [finfo] (http://php.net/manual/en/function.finfo-file.php)를 사용하십시오 :'$ finfo = new finfo(); $ currentFileMimeType = $ finfo-> file ($ fullPathAndFilename, FILEINFO_MIME_TYPE); ' – feeela

+0

내 서버에서 코드를 테스트했는데 문제없이 작동합니다. 오류를 검사하려면'ini_set ('display_errors', 1); 및 'error_reporting (E_ALL);을 추가하십시오. –

+0

@feeela에 동의합니다. Tuga는 특히 유용한 입력 세트를 테스트하지 않았습니다. 다음 번에 더욱 강력 해 지도록 노력하십시오. –

답변

관련 문제