Para cargar archivos, necesitamos usar el tipo de archivo type=file del formulario en HTML y su atributo enctype. Esto es lo que todos tenemos que usar. Por supuesto, debemos usar la biblioteca de funciones FILE, la biblioteca de funciones de tipo cadena, la biblioteca de funciones de directorio y $_FILES[] entre las bibliotecas de funciones de PHP.
Quizás cada sitio tenga muchas restricciones a la hora de cargar archivos. Estas restricciones pueden incluir el tipo de archivo, el tamaño del archivo, la extensión y la existencia del directorio de carga, la existencia del archivo de carga, la capacidad de escritura del directorio y la legibilidad y el cambio de nombre. archivos cargados y cómo copiar archivos del caché al directorio que necesita.
Por supuesto, el preprocesamiento de errores no se puede ignorar. Si lo analizamos más a fondo, también podemos habilitar la grabación del registro de eventos para operaciones de archivos.
A continuación implementamos estas funciones a través de un programa:
El primero es nuestro valor de variable preestablecido, que incluye el tamaño del archivo, el tipo de extensión del archivo, el tipo MIMI y si se debe eliminar la variable de cambio
$MAX_SIZE = 2000000;
$FILE_MIMES = matriz('imagen/jpeg','imagen/jpg','imagen/gif'
,'image/png','application/msword');
$
FILE_EXTS = array('.zip','
.jpg','.png','.gif');
establecer variables de acceso al navegador y variables de acceso al directorio:
$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 = archivos/;
$upload_url = $url_dir./archivos/;
$message =;
Cree el directorio de carga y cambie los permisos en consecuencia:
if (!is_dir(files)) {
si (!mkdir($upload_dir))
die (el directorio upload_files no existe y la creación falló);
si (!chmod($upload_dir,0755))
morir (falló el cambio de permiso a 755);
}
Manejo de solicitudes de usuarios:
si ($_REQUEST[del] && $BORRAR) {
$recurso = fopen(log.txt,a);
fwrite($recurso,fecha(Ymd h:i:s).DELETE - $_SERVER[REMOTE_ADDR].$_REQUEST[del]\n);
fclose($recurso);
if (strpos($_REQUEST[del],/.)>0); //posible piratería
else if (strpos($_REQUEST[del],files/) === false //posible piratería);
else if (substr($_REQUEST[del],0,6)==archivos/) {
desvincular($_REQUEST[del]);
print <script>window.location.href='$url_this?message=eliminado exitosamente'</script>;
}
}
de lo contrario ($_FILES['archivo de usuario']) {
$recurso = fopen(log.txt,a);
fwrite($recurso,fecha(Ymd h:i:s).UPLOAD - $_SERVER[REMOTE_ADDR]
.$_FILES['archivo de usuario']['nombre'].
.$_FILES['archivo de usuario']['tipo'].\n);
fclose($recurso)
$tipo_archivo = $_FILES['archivo de usuario']['tipo'];
$file_name = $_FILES['userfile']['nombre'];
$file_ext = strtolower(substr($file_name,strrpos($file_name,.)));
//Verificación del tamaño del archivo:
if ( $_FILES['userfile']['size'] > $MAX_SIZE)
$message = El tamaño del archivo es superior a 2 MB.;
//Tipo de archivo/Verificación de extensión
de lo contrario, si (!in_array($tipo_archivo, $FILE_MIMES)
&& !in_array($archivo_ext, $FILE_EXTS) )
$message = Lo sentimos, no se permite cargar $file_name($file_type).;
demás
$mensaje = do_upload($upload_dir, $upload_url);
print <script>window.location.href='$url_this?message=$message'</script>;
}
else if (!$_FILES['userfile']);
demás
$message = Archivo especificado no válido.;
Lista los archivos que subimos:
$handle=opendir($upload_dir);
$lista de archivos = ;
mientras ($archivo = readdir($manejar)) {
if(!is_dir($archivo) && !is_link($archivo)) {
$listadearchivos .= <a href='$upload_dir$archivo'>.$archivo.</a>;
si ($BORRABLE)
$listadearchivos .= <a href='?del=$upload_dir$file' title='delete'>x</a>;
$lista de archivos .= <sub><pequeño><pequeño><color de fuente=gris> .date(dm H:i, filemtime($upload_dir.$file))
.</font></small></small></sub>;
$listadearchivos .=<br>;
}
}
función do_upload($upload_dir, $upload_url) {
$temp_name = $_FILES['userfile']['tmp_name'];
$file_name = $_FILES['userfile']['nombre'];
$nombre_archivo = str_replace( \\,,$nombre_archivo );
$nombre_archivo = str_replace(',,$nombre_archivo);
$file_path = $upload_dir.$file_name
//Verificación del nombre del archivo
si ($ nombre_archivo ==) {
$message = Nombre de archivo especificado no válido;
devolver $mensaje;
}
$resultado = move_uploaded_file($temp_name, $file_path);
si (!chmod($file_path,0777))
$mensaje = error al cambiar el permiso a 777.;
demás
$mensaje = ($resultado)?$file_name cargado correctamente:
Algo anda mal al cargar un archivo.;
devolver $mensaje;
}
?>
<centro>
<color de fuente=rojo><?=$_REQUEST[mensaje]?></fuente>
<br>
<nombre del formulario=id de carga=carga ENCTYPE=multiparte/método de datos del formulario=publicación>
Cargar archivo <tipo de entrada=id de archivo=nombre de archivo de usuario=archivo de usuario>
<tipo de entrada=nombre de envío=valor de carga=Cargar>
</form>
<br><b>Mis archivos</b>
<ancho h=70%>
<?=$lista de archivos?>
<ancho h=70%>
<pequeño><sup>Desarrollado por
<a estilo=text-decoration:none href=http://tech.citypost.ca>CityPost.ca</a>
</sup></pequeño>
</centro>