php - move_uploaded_file - Cómo subir y guardar archivos con el nombre deseado
move_uploaded_file cambiar nombre (6)
Estoy usando este código para subir archivos (imágenes a una carpeta)
<form action='''' method=''POST'' enctype=''multipart/form-data''>
<input type=''file'' name=''userFile''><br>
<input type=''submit'' name=''upload_btn'' value=''upload''>
</form>
<?php
$target_Path = "images/";
$target_Path = $target_Path.basename( $_FILES[''userFile''][''name''] );
move_uploaded_file( $_FILES[''userFile''][''tmp_name''], $target_Path );
?>
cuando el archivo (imagen) se guarda en la ruta especificada ... ¿QUÉ pasa si quiero guardar el archivo con el nombre deseado ...?
He intentado reemplazar ESTE
$target_Path = $target_Path.basename( $_FILES[''userFile''][''name''] );
CON ESTE
$target_Path = $target_Path.basename( "myFile.png" );
PERO no está funcionando
AQUÍ ESTÁ EL CÓDIGO EN PHP PARA CARGAR LA IMAGEN EN LA BASE DE DATOS, MOSTRARLA Y TAMBIÉN GUARDARLA EN TU CARPETA LOCAL
EN PRIMER CÓDIGO HTML PARA LA FORMA:
<div class="upload"> <form method="POST" enctype="multipart/form-data" id="imageform"> <br> <input type="file" name="image" id="photoimg" > <br><br> <input type="submit" name="submit" value="UPLOAD"> </form> </div>
AQUÍ ESTÁ EL CÓDIGO PHP ENTERO:
crear base de datos y tabla como lo desee. (solo se requieren 2 campos) En la tabla, id(INT) 255 primary key AUTO INCREMENT and your image row(anyname) (MEDIUMBLOB)
<?php
if(isset($_POST[''submit''])){
if(@getimagesize($_FILES[''image''][''tmp_name'']) == FALSE){
echo "<span class=''image_select''>please select an image</span>";
}
else{
$image = addslashes($_FILES[''image''][''tmp_name'']);
$name = addslashes($_FILES[''image''][''name'']);
$image = file_get_contents($image);
$image = base64_encode($image);
saveimage($name,$image);
$uploaddir = ''profile/''; //this is your local directory
$uploadfile = $uploaddir . basename($_FILES[''image''][''name'']);
echo "<p>";
if (move_uploaded_file($_FILES[''image''][''tmp_name''], $uploadfile)) {// file uploaded and moved}
else { //uploaded but not moved}
echo "</p>";
}
}
displayimage();
function saveimage($name,$image)
{
$con = mysql_connect("localhost","root","your database password");
mysql_select_db("your database",$con);
$qry = "UPDATE your_table SET your_row_name=''$image''";
$result = @mysql_query($qry,$con);
if($result)
{
echo "<span class=''uploaded''>IMAGE UPLOADED</span>";
}
else
{
echo "<span class=''upload_failed''>IMAGE NOT UPLOADED</span>";
}
}
function displayimage()
{
$con = mysql_connect("localhost","root","your_password");
mysql_select_db("your_database",$con);
$qry = "select * from your_table";
$result = mysql_query($qry,$con);
while($row = mysql_fetch_array($result))
{
echo ''<img class="image" src="data:image;base64,''.$row[1].''">'';
}
mysql_close($con);
}
?>
Esto funcionaría muy bien: puede usar HTML5 para permitir que solo se carguen los archivos de imagen. Este es el código para uploader.htm -
<html>
<head>
<script>
function validateForm(){
var image = document.getElementById("image").value;
var name = document.getElementById("name").value;
if (image =='''')
{
return false;
}
if(name =='''')
{
return false;
}
else
{
return true;
}
return false;
}
</script>
</head>
<body>
<form method="post" action="upload.php" enctype="multipart/form-data">
<input type="text" name="ext" size="30"/>
<input type="text" name="name" id="name" size="30"/>
<input type="file" accept="image/*" name="image" id="image" />
<input type="submit" value=''Save'' onclick="return validateForm()"/>
</form>
</body>
</html>
Ahora el código para upload.php -
<?php
$name = $_POST[''name''];
$ext = $_POST[''ext''];
if (isset($_FILES[''image''][''name'']))
{
$saveto = "$name.$ext";
move_uploaded_file($_FILES[''image''][''tmp_name''], $saveto);
$typeok = TRUE;
switch($_FILES[''image''][''type''])
{
case "image/gif": $src = imagecreatefromgif($saveto); break;
case "image/jpeg": // Both regular and progressive jpegs
case "image/pjpeg": $src = imagecreatefromjpeg($saveto); break;
case "image/png": $src = imagecreatefrompng($saveto); break;
default: $typeok = FALSE; break;
}
if ($typeok)
{
list($w, $h) = getimagesize($saveto);
$max = 100;
$tw = $w;
$th = $h;
if ($w > $h && $max < $w)
{
$th = $max / $w * $h;
$tw = $max;
}
elseif ($h > $w && $max < $h)
{
$tw = $max / $h * $w;
$th = $max;
}
elseif ($max < $w)
{
$tw = $th = $max;
}
$tmp = imagecreatetruecolor($tw, $th);
imagecopyresampled($tmp, $src, 0, 0, 0, 0, $tw, $th, $w, $h);
imageconvolution($tmp, array( // Sharpen image
array(−1, −1, −1),
array(−1, 16, −1),
array(−1, −1, −1)
), 8, 0);
imagejpeg($tmp, $saveto);
imagedestroy($tmp);
imagedestroy($src);
}
}
?>
Puede obtener el código fuente de demostración desde aquí: http://abhinavsingh.com/blog/2008/05/gmail-type-attachment-how-to-make-one/
Está listo para usar o puede modificarlo para adaptarlo a las necesidades de su aplicación. Espero eso ayude :)
Puedes probar esto,
$info = pathinfo($_FILES[''userFile''][''name'']);
$ext = $info[''extension'']; // get the extension of the file
$newname = "newname.".$ext;
$target = ''images/''.$newname;
move_uploaded_file( $_FILES[''userFile''][''tmp_name''], $target);
usar esto para la ruta de destino para cargar
<?php
$file_name = $_FILES["csvFile"]["name"];
$target_path = $dir = plugin_dir_path( __FILE__ )."//upload//". $file_name;
echo $target_path;
move_uploaded_file($_FILES["csvFile"]["tmp_name"],$target_path. $file_name);
?>
Configurar el archivo "php.ini"
Primero, asegúrese de que PHP esté configurado para permitir la carga de archivos. En su archivo "php.ini", busque la directiva file_uploads y configúrela como Activada:
file_uploads = On
Crear el formulario HTML
A continuación, cree un formulario HTML que permita a los usuarios elegir el archivo de imagen que desean cargar:
<!DOCTYPE html>
<html>
<body>
<form action="upload.php" method="post" enctype="multipart/form-data">
Select image to upload:
<input type="file" name="fileToUpload" id="fileToUpload">
<input type="submit" value="Upload Image" name="submit">
</form>
</body>
</html>
Algunas reglas a seguir para el formulario HTML anterior: Asegúrese de que el formulario use method = "post". El formulario también necesita el siguiente atributo: enctype = "multipart / form-data". Especifica qué tipo de contenido usar al enviar el formulario. Sin los requisitos anteriores, la carga del archivo no funcionará. Otras cosas para notar: el atributo type = "file" de la etiqueta muestra el campo de entrada como un control de selección de archivo, con un botón "Examinar" al lado del control de entrada. El formulario anterior envía datos a un archivo llamado "upload.php" ", que crearemos a continuación.
Crear el script PHP de carga de archivo
El archivo "upload.php" contiene el código para cargar un archivo:
<?php
$target_dir = "uploads/";
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
$uploadOk = 1;
$imageFileType = pathinfo($target_file,PATHINFO_EXTENSION);
// Check if image file is a actual image or fake image
if(isset($_POST["submit"])) {
$check = getimagesize($_FILES["fileToUpload"]["tmp_name"]);
if($check !== false) {
echo "File is an image - " . $check["mime"] . ".";
$uploadOk = 1;
} else {
echo "File is not an image.";
$uploadOk = 0;
}
}
?>