2009-10-29 4 views
0

PHP 언어로 ftp를 사용하여 mp3 파일을 서버에 업로드하려고합니다.이 코드에 대한 원시 코드 스크립트를 작성했습니다. 서버 이미지에서 pdf, doc 파일이 업로드되었지만 mp3 파일을 업로드 할 수 없습니다.ftp로 mp3 파일을 PHP로 서버에 업로드하려면 어떻게해야합니까?

Plz, 누구든지 나를 도울 까? 나는 심각한 문제에 빠져있다!

그것은, 내가 mp3 파일 여기

내 코드가 업로드하기 위하여려고 할 때 존재하지 않는 파일을 보여줍니다 -

<?php 

// FTP Configuration 
$FTP_User = $_POST["username"]; 
$FTP_Pass = $_POST["password"]; 
$FTP_Host = "###"; 
$FTP_Root = "$dir"; 

    $action=$_GET["action"]; 
    $username=$_POST["username"]; 
    $password=$_POST["password"]; 
    $dir=$_POST["dir"]; 
    $Filename=$_POST["Filename"]; 
    $MAX_FILE_SIZE= $_POST["MAX_FILE_SIZE"]; 

// If the form was submitted 
if (isset($action) && $action == "submit") { 

if ($_FILES['File_1']['size'] > $MAX_FILE_SIZE) 
{ 
echo "Error: $Filename exceeds upload limit"; 
exit; 
} 

echo $_FILES['File_1']['size']; 
echo $MAX_FILE_SIZE; 

if ($dir == "-1") 
{ 
echo "Error: Please choose a File Type to upload"; 
exit; 
} 

// Connect to the ftp address 
$Connect = ftp_connect($FTP_Host); 

if (!$Connect) 
{ 
echo "Error: Could not connect to ftp server<br>"; 
exit; 
} 

echo "Connected to $FTP_Host<br>"; 

// Login 
$login = ftp_login($Connect, $FTP_User, $FTP_Pass); 

//Turns passive mode on 
$passive = ftp_pasv ($Connect, true); 

echo "Current directory is now: " . ftp_pwd($Connect) . "<br>"; 

if (ftp_chdir($Connect, "$FTP_Root")) 
{ 
echo "Current directory is now: " . ftp_pwd($Connect) . "<br>"; 
} else echo "Cannot change directory"; 

$contents = ftp_nlist($Connect, "."); 

// output $contents 
print_r($contents); 

// check upload status 
if (!passive){ 
echo "Failed to enter passive mode.<br>"; 
} 
else { 
echo "Entered passive mode.<br>"; 
} 

if (!$login) 
{ 
echo "Error: Could not log on as $FTP_User<br>"; 
ftp_quit($Connect); 
exit; 
} 

echo "Logged in as $FTP_User<br>"; 

// Set the filename to be uploaded 
$Filename = $_FILES['File_1']['name']; 
$myFile = $_FILES['File_1']; 

//echo 'Filename is :'. $Filename; 
print_r($myFile); 
if (file_exists($Filename)) 
{ 
echo "The file $Filename exists<BR>"; 
} 
else 
{ 
echo "The file $Filename does not exist<BR>"; 
} 

$destination_file = $FTP_ROOT.$_FILES['File_1']['name']; 

// Set the local resource (the file that will be uploaded) 
$file = $myFile['tmp_name']; 

// If the file was successfully uploaded 
$upload = ftp_put($Connect, $destination_file, $file, FTP_BINARY); 

if (!$upload) 
{ 
// Show success message 
echo "There was a problem uploading $destination_file"; 
} 
else 
{ 
// Else show error message 
echo "Successfully uploaded $Filename"; 

} 
ftp_close($Connect); 
} 

?> 

Form Code: 

<html> 
<head> 
<title> PHP FTP Upload Test </title> 
</head> 
<body> 
<table> 
<form method="post" action="file_upload.php?action=submit" enctype="multipart/form-data"> 
<input type="hidden" name="MAX_FILE_SIZE" value="10000000"> 
<tr> 
<td>Username:</td> 
<td><input type="text" name="username" size="30"></td> 
</tr> 
<tr> 
<td>Password:</td> 
<td><input type="password" name="password" size="30"></td> 
</tr> 
<tr> 
<td>File Type:</td> 
<td><select name="dir"> 
<option value="-1">File Type</option> 
<!--<option value="/httpdocs/charbel/upload/">Image</option> 
<option value="/httpdocs/charbel/upload/">PDF</option> 
<option value="/httpdocs/charbel/upload/">MP3</option> 
<option value="/httpdocs/charbel/upload/">Video</option> 
--> 
<option value="/public_html/">Image</option> 
<option value="/public_html/">PDF</option> 
<option value="/public_html/">MP3</option> 
<option value="/public_html/">Video</option> 

</select> 
</td> 
</tr> 
<tr> 
<td>File:</td> 
<td><input type="file" name="File_1" size="70"></td> 
</tr> 
<tr> 
<td colspan="2" align="right"><input type="submit" value="Submit"></td> 
</tr> 
</form> 
</table> 
</body> 
</html> 
+1

'$ MAX_FILE_SIZE = $ _POST [ "MAX_FILE_SIZE"];는 정말 안전하지 않습니다. – jantimon

답변

2

설치 한 컬 모듈이 있거나 설치할 수있는 경우, 나는 그것을 사용하는 것이 좋습니다. http://www.web-development-blog.com/archives/tutorial-ftp-upload-via-curl/

cURL이 궁금한 점이 있다면 파일에 file_exists($myFile['tmp_name'])이 있는지 확인할 수 있습니다. 그 이유는이 함수가 실제 파일 이름을 기대하고 있기 때문입니다.

+0

동의. file_exists는 파일과 함께 전송 된 이름이 아닌 임시 이름에서 실행해야합니다. – Narcissus

관련 문제