upload immagini

Ciao devo fare qualcosa per uppare delle immagini in una cartella trovata dinamicamente dal db e uppare 5 - 10 - 15 -20 [i campi sono selezionabili tramite una select] in una cartella annunci/username/id_annuncio/imamgini come posso fare?

ho bisogno dell'aiuto per l'upload che non so proprio come fare

inviato 10 anni fa
Andrea Turso
Andrea Turso
86
X 0 X

Questo link spiega come caricare files:

http://www.php.net/manual/it/features.file-upload.php

vedi se ti può essere d'aiuto...

ciao

Lore

risposto 10 anni fa
Lore
Lore
1
X 0 X

beh ho capito + di prima ma non abbastanza da mettere su uno script ... come posso fare?

risposto 10 anni fa
Andrea Turso
Andrea Turso
86
X 0 X

Tu esattamente cosa devi fare?

Non ho capito cosa vuol dire:

...uppare 5 - 10 - 15 -20 [i campi sono selezionabili tramite una select] ....

Nel seno che devi uppare 5/10/15/20 immagini?

ciao

Lore

risposto 10 anni fa
Lore
Lore
1
X 0 X

no quello è che i campi possono cambiare non sono fissi sono 4 opzioni 5 - 10 -15 - 20 campi in modo da uppare + foto in una volta sola [dipende da quanti campi si scelgono]

risposto 10 anni fa
Andrea Turso
Andrea Turso
86
X 0 X
no quello è che i campi possono cambiare non sono fissi sono 4 opzioni 5 - 10 -15 - 20 campi in modo da uppare + foto in una volta sola [dipende da quanti campi si scelgono]

Quindi il tuo problema è uplodare + files contemporaneamente?

Innanzitutto,c'è una direttiva nel php.ini che si chiama, mi pare,

upload_max_filesize

che ti indica la dimensione massima di upload, quindi se pesni che le tue immagini possano superare quella soglia devi modificare quel parametro aumentandolo...

In seconso luogo, se dovessi uplodare + files, farei:

<input type="file" name="img[]" value="">

Ricordandosi che la form dovrà avere l'attributo:

enctype="multipart/form-data"

e quando recupererai i dati dovrai ciclare l'array $_FILES

Ex:

for($i=0; $i < count($_FILES['img']['tmp_name']); $i++)
 echo "Nome immagine ".$_FILES['img']['name'][$i];

ciao

Lore

risposto 10 anni fa
Lore
Lore
1
X 0 X

ok questo l'avevopensato e come faccio ad uppare? :D:D

risposto 10 anni fa
Andrea Turso
Andrea Turso
86
X 0 X
ok questo l'avevopensato e come faccio ad uppare? :D:D

Da questa domanda, penso che forse non ho capito quello che ti serve, cmq nel caso mi sbagliassi,per uplodare dei file,fai una form del genere:

<form method="post" action="pag.php" enctype="multipart/form-data">
Immagine Uno:<input type="file" name="img[]" value=""><br />
Immagine Due:<input type="file" name="img[]" value=""><br />
......
Immagine N:<input type="file" name="img[]" value=""><br />

<input type="submit" name="invia" value="Upload">
</form>

...ma non so se è quello che intendevi tu con

...come faccio ad uppare?...

ciao

risposto 10 anni fa
Lore
Lore
1
X 0 X

intendo prendere l'ummagine e metterla da locale sull'ftp con php , in pratica upparla :D

il form lo so cosa devo fare lol ma non cosa fare in php per uppare le foto

risposto 10 anni fa
Andrea Turso
Andrea Turso
86
X 0 X

intendo prendere l'ummagine e metterla da locale sull'ftp con php , in pratica upparla :D

il form lo so cosa devo fare lol ma non cosa fare in php per uppare le foto

Per copiare 'fisicamente' le immagini, puoi utilizzare la funzione move_uploaded_file:

http://it.php.net/manual/en/function.move-uploaded-file.php

Prendendo ad esempio quello che devi fare tu (l'upload multiplo), quando carichi le tue immagini, fai un ciclo per recuperarle, puoi integrare la funzione così:

move_uploaded_file($_FILES['img']['tmp_name'][$i],"/dir/di/upload/".$_FILES['img']['name'][$i]);

NB se hai un server linux,la cartella in cui andranno uplodati i files, dovrà avere i permessi necessari, potresti mettere i permessi a 777 oppure i permessi di scrittura ad un determinato gruppo (ex apache)...

ciao

Lore

risposto 10 anni fa
Lore
Lore
1
X 0 X

uso questo per uppare le immagini                             <p></p> <?php foreach ($_FILES["pictures"]["error"] as $key => $error) {    if ($error == UPLOAD_ERR_OK) {        $tmp_name = $_FILES["pictures"]["tmp_name"][$key];        $name = $_FILES["pictures"]["name"][$key];        move_uploaded_file($tmp_name, "data/$name");    } } ?>

come faccio a fare in modo che siano SOLO JPG e che le uppi in una determinata cartella?

risposto 10 anni fa
Andrea Turso
Andrea Turso
86
X 0 X

sei fain un print_r dell'array $_FILES evdrai che oltre a error-name-tmp_image-size, passa anche un altro valore 'type' che indica appunto quello che serve a te, ossia il tipo dell'immagine sottoforma di :

images/jpeg

images/gif

images/jpg

Per caricare solo le jpg, farei un array in cui includo tutte le estensioni che dovranno essere uplodate (per ora solo jpeg, magari + avanti te ne serviranno altre...)

<?php
$arrImages = array("images/jpeg","images/jpg");

foreach ($_FILES["pictures"]["error"] as $key => $error) {
/*carico l'immagine solo se non ci sono errori e se l'estensione dell'immagine è compresa tra quelle che voglio uplodare */
   if ($error == UPLOAD_ERR_OK && in_array($_FILES['pictures']['type'][$key],$arrImages))  
   {
       $tmp_name = $_FILES["pictures"]["tmp_name"][$key];
       $name = $_FILES["pictures"]["name"][$key];

/*
Per uplodare in una determinata cartella, la specifichi come secondo parametro della funzione 
move_uploaded_file
*/
       move_uploaded_file($tmp_name, "data/$name");
         
   }
}
?>

Per quanto riguarad l'upload in una determinata cartella, come ti ho scritto nel commento:

devi specificare la cartella che vuoi come secondo parametro della funzione

move_uploaded_file

ora tu fai l'upload in 'data/', se vuoi cambiare path di upload. basta che modifichi quella,ex:

move_uploaded_file($tmp_name, "immagini/news/marzo/$name");

Spero di esserti stato d'aiuto...

ciao

Lore

risposto 10 anni fa
Lore
Lore
1
X 0 X

in locale dovrebbe funzionare?

perchè nn funziona la path è $dir = "../annunci/".$username."/".$id."/foto/";

la cartella esiste ma nn funziona

risposto 10 anni fa
Andrea Turso
Andrea Turso
86
X 0 X

in locale dovrebbe funzionare?

perchè nn funziona la path è $dir = "../annunci/".$username."/".$id."/foto/";

la cartella esiste ma nn funziona

Prova ad utilizzare i path assoluti al posto di quello relativo che utilizzi ora...

ciao

Lore

risposto 10 anni fa
Lore
Lore
1
X 0 X

come??? lol con i percorsi non ci so fare :(

risposto 10 anni fa
Andrea Turso
Andrea Turso
86
X 0 X

Per la differenza tra percorsi assoluti e relativi, guarda a questo link:

http://www.html.it/guida/html_23.htm

per recuperare il percorso della cartella del tuo sito, o lo scrivi a mano, oppure puoi fare:

$path_assluto = dirname(__FILE__);

in path avrai una cosa del genere:

\home\httpd\cartellaSito

e a questo punto ti crei il path per l'upload:

$path_upload = $path."/annunci/".$username."/".$id."/foto/;
//E' solo un esempio perchè non so se il path che ti ho segnato è corretto

__FILE__ è una 'costante magica' di php:

http://it.php.net/manual/it/language.constants.predefined.php

ciao

Lore

risposto 10 anni fa
Lore
Lore
1
X 0 X

così funziona foreach ($_FILES["pictures"]["error"] as $key => $error) {

   if ($error == UPLOAD_ERR_OK) {

       $tmp_name = $_FILES["pictures"]["tmp_name"][$key];

       $name = $_FILES["pictures"]["name"][$key];

       move_uploaded_file($tmp_name, "images/$name");

      echo '<p class="success"><strong>'.$name.'</strong> : upload avvenuto</p>';

   }else

   {

   echo '<p class="errore"><strong>'.$name.'</strong> : impossibile effettuare upload"</p>';

   }

}

ma nn posso controllare se sono Jpg :(

risposto 10 anni fa
Andrea Turso
Andrea Turso
86
X 0 X

Perchè no?

$arrImages = array("images/jpeg","images/jpg");

foreach ($_FILES["pictures"]["error"] as $key => $error) {
/*carico l'immagine solo se non ci sono errori e se l'estensione dell'immagine è compresa tra quelle che voglio uplodare */

   if ($error == UPLOAD_ERR_OK && in_array($_FILES['pictures']['type'][$key],$arrImages)) {
    //qui fai tutte le operazioni

}

Non funziona così?

ciao

Lore

risposto 10 anni fa
Lore
Lore
1
X 0 X

risolto :

gli array che mi avevi dato erano : imageS/formato invece è image/formato :) i piccoli errori bastardi

risposto 10 anni fa
Andrea Turso
Andrea Turso
86
modificato 10 anni fa
X 0 X

PS : se metto troppe cose di formato diverso mi da errore!

Warning: Invalid argument supplied for foreach() in \user\upload.php on line 88

risposto 10 anni fa
Andrea Turso
Andrea Turso
86
X 0 X

Quell'errore è dato prob dal fatto che non gli passi nessun file quando fai l'upload, fai prima il controllo che ci sia almeno un file::

if(count($_FILES['pictures']['tmp_name']) > 0)
{
$arrImages = array("images/jpeg","images/jpg");
foreach ($_FILES["pictures"]["error"] as $key => $error) {
/*carico l'immagine solo se non ci sono errori e se l'estensione dell'immagine è compresa tra quelle che voglio uplodare */

   if ($error == UPLOAD_ERR_OK && in_array($_FILES['pictures']['type'][$key],$arrImages)) {
    //qui fai tutte le operazioni

}
}

ciao

Lore

risposto 10 anni fa
Lore
Lore
1
X 0 X

lol succede quando gli metto troppi file diversi :D

risposto 10 anni fa
Andrea Turso
Andrea Turso
86
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda