Pour télécharger des fichiers, nous devons utiliser le type type=file du formulaire en HTML et son attribut enctype. C'est ce que nous devons tous utiliser. Bien entendu, nous devons utiliser la bibliothèque de fonctions FILE, la bibliothèque de fonctions de type chaîne, la bibliothèque de fonctions d'annuaire et $_FILES[] parmi les bibliothèques de fonctions PHP.
Peut-être que chaque site peut avoir de nombreuses restrictions sur le téléchargement de fichiers. Ces restrictions peuvent inclure le type de fichier, la taille du fichier, l'extension et l'existence du répertoire de téléchargement, l'existence du fichier de téléchargement, l'écriture du répertoire et la lisibilité, le renommage du fichier. fichiers téléchargés et comment copier des fichiers du cache vers le répertoire dont vous avez besoin.
Bien sûr, le prétraitement des erreurs ne peut pas être ignoré ! Si nous en discutons plus en détail, nous pouvons également activer l'enregistrement du journal des événements pour les opérations sur les fichiers.
Ci-dessous, nous implémentons ces fonctions via un programme :
La première est la valeur de notre variable prédéfinie, qui inclut la taille du fichier, le type d'extension de fichier, le type MIMI et la suppression ou non de la variable de commutation
$MAX_SIZE = 2000000 ;
$FILE_MIMES = tableau('image/jpeg','image/jpg','image/gif'
,'image/png','application/msword');
$FILE_EXTS = array('.zip','.jpg','.png','.gif');
$DELETABLE = true
; définir les variables d'accès au navigateur et aux variables d'accès au répertoire :
$site_name = $_SERVER['HTTP_HOST'] ;
$url_dir = http://.$_SERVER['HTTP_HOST'].dirname($_SERVER['PHP_SELF' ]);
$url_this = http://.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF' ];
$upload_dir = fichiers/;
$upload_url = $url_dir./files/;
$message =;
Créez le répertoire de téléchargement et modifiez les autorisations en conséquence :
if (!is_dir(files)) {
si (!mkdir($upload_dir))
die (le répertoire upload_files n'existe pas et la création a échoué) ;
si (!chmod($upload_dir,0755))
mourir (le changement d'autorisation en 755 a échoué.);
}
Traitement des demandes des utilisateurs :
si ($_REQUEST[del] && $DELETABLE) {
$resource = fopen(log.txt,a);
fwrite($resource,date(Ymd h:i:s).DELETE - $_SERVER[REMOTE_ADDR].$_REQUEST[del]\n);
fclose($resource);
if (strpos($_REQUEST[del],/.)>0); //piratage possible);
else if (strpos($_REQUEST[del],files/) === false //piratage possible);
sinon if (substr($_REQUEST[del],0,6)==files/) {
délier($_REQUEST[del]);
print <script>window.location.href='$url_this?message=supprimé avec succès'</script>;
}
}
sinon si ($_FILES['userfile']) {
$resource = fopen(log.txt,a);
fwrite($resource,date(Ymd h:i:s).UPLOAD - $_SERVER[REMOTE_ADDR]
.$_FILES['fichierutilisateur']['nom'].
.$_FILES['userfile']['type'].\n);
fclose($resource);
$file_type = $_FILES['userfile']['type'];
$file_name = $_FILES['userfile']['name'];
$file_ext = strtolower(substr($file_name,strrpos($file_name,.)));
//Vérification de la taille du fichier :
if ( $_FILES['userfile']['size'] > $MAX_SIZE)
$message = La taille du fichier est supérieure à 2 Mo. ;
//Vérification du type de fichier/de l'extension
sinon si (!in_array($file_type, $FILE_MIMES)
&& !in_array($file_ext, $FILE_EXTS) )
$message = Désolé, $file_name($file_type) n'est pas autorisé à être téléchargé.;
autre
$message = do_upload($upload_dir, $upload_url);
print <script>window.location.href='$url_this?message=$message'</script>;
}
sinon if (!$_FILES['userfile']);
autre
$message = Fichier spécifié non valide. ;
Liste les fichiers que nous avons téléchargés :
$handle=opendir($upload_dir);
$filelist = ;
while ($file = readdir($handle)) {
if(!is_dir($fichier) && !is_link($fichier)) {
$filelist .= <a href='$upload_dir$file'>.$file.</a>;
si ($DELETABLE)
$filelist .= <a href='?del=$upload_dir$file' title='delete'>x</a>;
$filelist .= <sub><small><small><font color=grey> .date(dm H:i, filemtime($upload_dir.$file))
.</font></small></small></sub>;
$filelist .=<br>;
}
}
function do_upload($upload_dir, $upload_url) {
$temp_name = $_FILES['userfile']['tmp_name'];
$file_name = $_FILES['userfile']['name'];
$file_name = str_replace( \\,,$file_name );
$file_name = str_replace(',,$file_name);
$file_path = $upload_dir.$file_name;
//Vérification du nom du fichier
si ( $nom_fichier ==) {
$message = Nom de fichier spécifié non valide ;
renvoyer $message ;
}
$result = move_uploaded_file($temp_name, $file_path);
si (!chmod($file_path,0777))
$message = échec de la modification de l'autorisation en 777. ;
autre
$message = ($result)?$file_name téléchargé avec succès :
Quelque chose ne va pas lors du téléchargement d'un fichier.;
renvoyer $message ;
}
?>
<centre>
<couleur de police=rouge><?=$_REQUEST[message]?></font>
<br>
<form name=upload id=upload ENCTYPE=multipart/form-data method=post>
Télécharger le fichier <input type=file id=userfile name=userfile>
<input type=submit name=upload value=Upload>
</form>
<br><b>Mes fichiers</b>
<h largeur=70%>
<?=$liste de fichiers?>
<h largeur=70%>
<small><sup>Développé par
<a style=text-decoration:none href=http://tech.citypost.ca>CityPost.ca</a>
</sup></petit>
</centre>