No presté mucha atención a la carga de archivos antes. Ayer hice uno simple pero descubrí que había bastantes problemas.
El código del programa al principio es el siguiente:
subirimg.php
<?php
//Determine si es una interfaz de carga o una interfaz de implementación. Si es una interfaz de carga, muestre la siguiente página HTML.
if(!$_POST['UploadAction']):
?>
<html>
<cabeza>
<título></título>
</cabeza>
<cuerpo><tabla><centro>
<formulario enctype="multipart/form-data" nombre="SubmitForm" action="" método="publicación">
<tipo de entrada="oculto" nombre="UploadAction" valor="1">
<tr><td><nombre de entrada="Cargar archivo" tipo="archivo" tamaño="30"></td></tr>
<tr><td><tipo de entrada="enviar" nombre="enviar" valor="Subir"></td>
<td><tipo de entrada="reset" nombre="reset" value="Reset"></td></tr>
</formulario>
</center></table></body>
</html>
<?php
//Si es una página de implementación, muestre la siguiente página HTML y active el script PHP
más:
?>
<html>
<cabeza>
<título></título>
</cabeza>
<cuerpo>
<?php
//www.knowsky.com inicializa el estado de UploadAction
$UploadAction=0;
$UploadFile=$_POST['UploadFile']
si(($UploadFile!="none") && ($UploadFile!=""))
{
$UploadPath=$_SERVER['DOCUMENT_ROOT']."\"
si (!is_writeable($UploadPath))
{
echo "El directorio $UploadPath no se puede escribir!";
}
demás
{
echo "Se puede escribir en el directorio $UploadPath!";
}
$FileName=$UploadFile_name;
si($UploadFile_size<1024)
{
$FileSize=(cadena)$UploadFile_size."byte";
}
elseif ($UploadFile_size<(1024*1024))
{
$FileSize=number_format((double)($UploadFile_size/1024),1)."KB";
}
demás
{
$FileSize=number_format((double)($UploadFile_size/(1024*1024)),1)."KB";
}
if(!file_exists($UploadPath.$NombreDeArchivo))
{
if(move_uploaded_file($UploadFile,$UploadPath.$NombreDeArchivo))
{
echo "El archivo $UploadFile_name ($FileSize) se cargó correctamente!";
}
demás
{
echo "¡Falló la carga del archivo $UploadFile_name ($FileSize)!";
}
desvincular ($UploadPath.$FileName);
}
demás
{
echo "¡El archivo $UploadFile_name ya existe!";
}
}
demás
{
echo "No seleccionó ningún archivo para cargar, o el archivo cargado excede $MAX_FILE_SIZE!";
}
?>
<br><a href="uploadimg.php">Regresar</a>
</cuerpo>
</html>
<?php
endif
?>
Después de ejecutarlo, descubrí que la carga no tuvo ningún efecto y ni siquiera pude ingresar a la página de implementación. Después de buscar y preguntar, descubrí que se necesita $ _FILES para obtener el archivo cargado,
así que hice algunos cambios:
$UploadFile=$_FILES['UploadFile']['tmp_name'];
$UploadFile_size=$_FILES['UploadFile']['tamaño'];
$UploadFile_name=$_FILES['UploadFile']['nombre'];
$FileName=strtolower($UploadFile_name);
Pensé que ya estaría hecho, pero apareció un mensaje de error:
Advertencia: move_uploaded_file(F:Serverwww): no se pudo abrir la secuencia: Permiso denegado en F:Serverwwweooolfinishuploadimg.php en la línea 76
Advertencia: move_uploaded_file(): No se puede mover 'E:WINDOWSTEMPphp34.tmp' a 'F:\Server\www' en F:Serverwwweooolfinishuploadimg.php en la línea 76
¡Falló la carga del archivo *****(****bytes)!
Y estaba depurando en el sistema WIN, por lo que no debería haber ningún problema de permiso de archivos. Miré y miré y pensé en ello, pero todavía no podía entenderlo. Publiqué mensajes en Lao Lao y Joy pidiendo ayuda. pero no obtuve la respuesta correcta. Una simple carga de archivos me llevó más de un día y todavía no pude hacerlo, lo que me frustró mucho porque no pude encontrar errores similares al mío en Internet.
Al final, no tuve más remedio que pensar por qué podía cargar archivos adjuntos con éxito al depurar con sablog. Así que miré detenidamente el código original para cargar el archivo adjunto en sablog e hice los siguientes cambios según el código:
función obtener extensión ($ nombre de archivo) {
return substr(strrchr($nombre de archivo, "."), 1);
}
$extensión=getextension($FileName);
if(move_uploaded_file($UploadFile,$UploadPath."temp.".$extensión))
//unlink($UploadFile);
desvincular($UploadPath."temp.".$extensión);
¡Los resultados se recibieron de inmediato y la carga fue exitosa!
Utilizo unlink($UploadPath."temp.".$extension aquí para eliminar inmediatamente los archivos cargados en el espacio y ahorrar espacio.