2009-10-29 6 views
0

Je veux télécharger des fichiers mp3 sur le serveur en utilisant ftp dans le langage PHP.J'ai fait un script de code brut pour cela.In image du serveur, pdf, fichiers doc sont téléchargés, mais je ne peux pas télécharger de fichiers mp3.Comment puis-je télécharger des fichiers mp3 sur le serveur en php par ftp?

Plz, quelqu'un m'aiderait? Je suis dans le pétrin !!!

Il montre le fichier n'existe pas quand je vais télécharger des fichiers mp3

Voici mon code, -

<?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 "];' est vraiment non sécurisé. – jantimon

Répondre

2

Si vous avez le module cURL installé ou pouvez l'installer, Je recommande de l'utiliser. Voici un tutoriel qui fait ce que vous essayez de faire: http://www.web-development-blog.com/archives/tutorial-ftp-upload-via-curl/

Si cURL est hors de question, vous pouvez vérifier si le fichier existe avec file_exists($myFile['tmp_name']), parce que je suis assez sûr que la fonction attend un nom de fichier réel.

+0

D'accord. file_exists doit être exécuté sur le nom temporaire, pas sur le nom qui a été envoyé avec le fichier. – Narcissus

Questions connexes