php - filectime - Cómo cambiar el nombre de cada archivo antes de cargarlo en el servidor a una marca de tiempo
rename file php (3)
Consulte este sitio web para ver un ejemplo decente de la carga de archivos y una explicación. También este sitio parece ser el lugar donde encontraste este script en particular o si no ofrece una buena explicación.
He modificado tu código para incluir algunos comentarios para que tú y otros puedan entender mejor lo que está sucediendo. En teoría, el código no debe sobrescribir los archivos existentes como dices, pero he agregado lo que necesitarías cambiar para establecer el nombre del archivo en una cadena aleatoria.
Además, está almacenando el nombre de archivo original en la sesión y no el nombre de archivo modificado.
define("UPLOAD_DIR", "/path/to/uploads/");
if (!empty($_FILES["ambum_art"]))
{
// The file uploaded
$myFile = $_FILES["ambum_art"];
// Check there was no errors
if ($myFile["error"] !== UPLOAD_ERR_OK) {
echo "<p>An error occurred.</p>";
exit;
}
// Rename the file so it only contains A-Z, 0-9 . _ -
$name = preg_replace("/[^A-Z0-9._-]/i", "_", $myFile["name"]);
// Split the name into useful parts
$parts = pathinfo($name);
// This part of the code should continue to loop until a filename has been found that does not already exist.
$i = 0;
while (file_exists(UPLOAD_DIR . $name)) {
$i++;
$name = $parts["filename"] . "-" . $i . "." . $parts["extension"];
}
// If you want to set a random unique name for the file then uncomment the following line and remove the above
// $name = uniqid() . $parts["extension"];
// Now its time to save the uploaded file in your upload directory with the new name
$success = move_uploaded_file($myFile["tmp_name"], UPLOAD_DIR . ''/''.$name);
// If saving failed then quit execution
if (!$success) {
echo "<p>Unable to save file.</p>";
exit;
}
// Set file path to the $Dir variable
$Dir = UPLOAD_DIR .''/''. $name;
// Set the permissions on the newly uploaded file
chmod($Dir, 0644);
// Your application specific session stuff
unset($_SESSION[''video'']);
$_SESSION[''album_art''] = $Dir; // Save the file path to the session
$ambum_art_result = array();
$ambum_art_result[''content''] = $Dir;
echo json_encode($ambum_art_result);
}
Lea más acerca de PHPs uniqid .
También te aconsejo encarecidamente que hagas algún tipo de comprobación de archivos, ya que actualmente parece que cualquier archivo puede cargarse. El segundo enlace de arriba tiene una sección titulada ''Consideraciones de seguridad'' que yo recomendaría leer cuidadosamente.
Estoy usando el siguiente código para subir algunos archivos, pero bueno, algunos se reemplazan ya que los nombres son parecidos. Solo quiero saber cómo cambio el nombre, lo intenté pero me encontré a mí mismo jugando todo el código.
PHP
if (!empty($_FILES["ambum_art"])) {
$myFile = $_FILES["ambum_art"];
if ($myFile["error"] !== UPLOAD_ERR_OK) {
echo "<p>An error occurred.</p>";
exit;
}
$name = preg_replace("/[^A-Z0-9._-]/i", "_", $myFile["name"]);
$i = 0;
$parts = pathinfo($name);
while (file_exists(UPLOAD_DIR . $name)) {
$i++;
$name = $parts["filename"] . "-" . $i . "." . $parts["extension"];
}
$success = move_uploaded_file($myFile["tmp_name"],UPLOAD_DIR . ''/''.$name);
if (!$success) {
echo "<p>Unable to save file.</p>";
exit;
} else {
$Dir = UPLOAD_DIR .''/''. $_FILES["ambum_art"]["name"];
}
chmod(UPLOAD_DIR .''/''. $name, 0644);
unset($_SESSION[''video'']);
$_SESSION[''album_art''] = $Dir;
$ambum_art_result = array();
$ambum_art_result[''content''] = $Dir;
echo json_encode($ambum_art_result);
}
Me gustaría que cada archivo tenga algo de esta variable generada a partir del tiempo.
$rand_name = microtime().microtime().time().microtime();
Gracias.
No quiero verificar primero si existe el archivo, ya que eso se agrega a los procesos, solo quiero usar time () y algunas cadenas aleatorias. para obtener un nombre único.
Este código está filtrando el nombre, luego verifica si ya se envió el archivo con exactamente el mismo nombre. Si lo es, el nombre se cambia con el número.
Si desea cambiar el nombre del archivo como en muchos sitios, puede modificar esta línea $name = preg_replace("/[^A-Z0-9._-]/i", "_", $myFile["name"]);
Por ejemplo en: $name = time().''_''.preg_replace("/[^A-Z0-9._-]/i", "_", $myFile["name"]);
Si el usuario envía el archivo calle ''hello.jpg'', este código lo cambiará a _hello.jpg si ya existe el archivo con el mismo nombre, ya que se usará el nombre _hello-.jpg.
Primero debe copiar el archivo que desea cargar y luego debe cambiar el nombre. Ex.
//dupdo
if (!copy($file, $newfile)) {
echo "failed to copy $file.../n";
}
?>
//rebautizar
rename(''picture'', ''img506.jpg'');
Enlace de referencia para copiar
Editado:
Reemplace su código con esto y luego intente
<?php
if (!empty($_FILES["ambum_art"])) {
$myFile = $_FILES["ambum_art"];
if ($myFile["error"] !== UPLOAD_ERR_OK) {
echo "<p>An error occurred.</p>";
exit;
}
$name = preg_replace("/[^A-Z0-9._-]/i", "_", $myFile["name"]);
$i = 0;
$parts = pathinfo($name);
while (file_exists(UPLOAD_DIR . $name)) {
$i++;
$name = $parts["filename"] . "-" . $i . "." . $parts["extension"];
}
if (file_exists($myFile["name"])) {
rename($myFile["name"], $myFile["name"].time()); //added content
}
$success = move_uploaded_file($myFile["tmp_name"],UPLOAD_DIR . ''/''.$name);
if (!$success) {
echo "<p>Unable to save file.</p>";
exit;
} else {
$Dir = UPLOAD_DIR .''/''. $_FILES["ambum_art"]["name"];
}
chmod(UPLOAD_DIR .''/''. $name, 0644);
unset($_SESSION[''video'']);
$_SESSION[''album_art''] = $Dir;
$ambum_art_result = array();
$ambum_art_result[''content''] = $Dir;
echo json_encode($ambum_art_result);
}
?>
Esto cambiará el nombre de su archivo existente y luego copiará su archivo