Come caricare immagini e video

ciao
volevo dirti una cosa riguardo alla selezione multipla delle immagini (ctrl click):
si può fare così
HTML:
  Select images: <input type="file" name="img" multiple="multiple" />
ma c'è un però: è html5 non html4 e poi non è comunque supportato da ie
quindi o passi a html5 (che devo ancora approfondire) o rimani con i 5 campi usuali (comunque migliorabili)
 
Ciao

Ciao,

Io non adopero ie, però mio padre adopera chrome e mio nipote purtroppo ie. L'unico problema potrebbe essere mio nipote al limite. Con chrome, che tu sappia è compatibile insieme a mozzilla ????? E un'altra cosa, al limite, come si potrebbe migliorare la selezione dei 5 campi ????
 
ciao
con crome è compatibile. (non so dirte la versione)
comunque se vuoi utilizare l'attributo multiplr devi avere pazienza perche devo farci delle prove.
comunque per migliorere l'imput di 5 elementi poi eventalmente ti posto.
dimmi quale strada vuoi scegliere
 
ciao
per verificare il risultato di multiple hi fatto questo piccolo script (nota: il name deve essere un array)
PHP:
<?php
if(isset($_POST['submit'])){
	var_dump($_FILES['immagine']);
}
?>
<form action='<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>' method='POST' enctype='multipart/form-data'>
	Immagine: <input name='immagine[]'  type='file' multiple='multiple'/> <br /> <br />
	<input name='submit' type='submit' value='Salva' />
</form>
con il multiple puoi selezionare più immagini alla volta con ctrl+click (più d'una una alla volta) o con shift intervallo.
ho fatto una prova selezionando più immagini (n. 3) e il var dump mi ha restituito
array(5) {
["name"]=> array(3) {
[0]=> string(5) "3.gif"
[1]=> string(5) "1.gif"
[2]=> string(5) "2.gif" }
["type"]=> array(3) {
[0]=> string(9) "image/gif"
[1]=> string(9) "image/gif"
[2]=> string(9) "image/gif" }
["tmp_name"]=> array(3) {
[0]=> string(27) "C:\WINDOWS\TEMP\php2954.tmp"
[1]=> string(27) "C:\WINDOWS\TEMP\php2955.tmp"
[2]=> string(27) "C:\WINDOWS\TEMP\php2956.tmp" }
["error"]=> array(3) {
[0]=> int(0)
[1]=> int(0)
[2]=> int(0) }
["size"]=> array(3) {
[0]=> int(956)
[1]=> int(842)
[2]=> int(901) }
}
come puoi notare si tratta di array di array.
e cominciamo con i problemi.
se non ricordo male nella tua tabella ogni record poteva contenere tre nomi di file immagini, quindi se uno ne selezione di più come minimo ti fa casino
quindi bisonga trovare il metodo per eliminare le immagini in più (ma non solo la parte [name] ma anche gli altri corrispondenti)
poi si deve fare la verifica dei file ammessi ed eliminare quell'array dove c'è il file non ammesso
da considerare che inoltre (e questo non so il perche) l'ordine che viene presentato nell'arrai NON è quello con cui hai selezionato le immagini (quindi eventualmente quale eliminare?)
secondo me, pur se fattibile, diventa una cosa un po' lunghetta
 
Ciao

Ciao,

Io ancora non ho provato la parte del codice che mi avevi mandato. ho avuto un po' da fare stamattina. La proverò nel pomeriggio. Cosa mi consigli di fare ??? Con crhome la selezione multipla è compatibile ???? Perkè al limiti per mio nipote ci si può pensare più avanti. L'importante è sapere se con crhome è compatibile o meno. Nel pomeriggio provo lo spezzone di codice ch emi hai postato (dopo il riposino).
 
ciao
il problema come detto non è crome o similaria, ma quanti campi in un record hai disponibile per i nomi dei file immagini, se ne selezioni di piu ti va in pallino tutto. poi avendo la possibilità di selezione multipla (col ctrl o con shift) la possibilità di errore aumenta. quindi molto più necessario verificare e eliminare i file che non sono immagini.
dato che si tratta di array di array le cose non sono semplicissime (non impossibili) ma da pensarci un poco
 
Ciao

Una cosa,

Mi potresti scrivere gentilmente uno scrip che sposta le immaggini in una cartella ??? Anche se c'è la selezione multipla. Mi spiego meglio. Sto provando questo che mi hai dato:

PHP:
 Selezione immagini: <input type="file" name="img" multiple="multiple" />

Nella tabella che avevo creato in precdenza, avevo l'id, titolo, e immagine. il name ="img" a cosa corrisponde dei campi se corrisponde a qualcosa ???? Considera inoltre, che le immagini vengono scnadarizzate e messe in un unica cartella. probabile suddivise le cartelle per nome della rivista (penso).
 
ciao
se non metti
Selezione immagini: <input type="file" name="img[]" multiple="multiple" />ti prende comunque un'immagine sola
comunque ho due o tre giorni di fuoco. ci penso e ti so dire
 
Ciao

Ciao,

Scusami allora per il disturbo, per adesso ti ringrazio, domani ritornerò un po' tardi che andiamo fuori. Però nel pomeriggio se non sono troppo stanco ci dovrei essere. Grazie ancora davvero.
 
ciao
se ti può servire un esempio di controllo per inserimento multiplo.
fai delle prove di verifica

PHP:
<!-- esempio di out put del var_dump selezionando più immagini
array(5) { ["name"]=> array(3) { 
				[0]=> string(5) "3.gif" 
				[1]=> string(5) "1.gif" 
				[2]=> string(5) "2.gif" } 
			["type"]=> array(3) { 
				[0]=> string(9) "image/gif" 
				[1]=> string(9) "image/gif" 
				[2]=> string(9) "image/gif" } 
			["tmp_name"]=> array(3) { 
				[0]=> string(26) "C:\WINDOWS\TEMP\php274.tmp" 
				[1]=> string(26) "C:\WINDOWS\TEMP\php275.tmp" 
				[2]=> string(26) "C:\WINDOWS\TEMP\php276.tmp" } 
			["error"]=> array(3) { 
				[0]=> int(0) 
				[1]=> int(0) 
				[2]=> int(0) } 
			["size"]=> array(3) { 
				[0]=> int(956) 
				[1]=> int(842) 
				[2]=> int(901) } 
			} 
-->
<?php
function verifica_immagini($imm){
	$ammesse=array("image/gif","image/jpeg","image/pjpeg","image/png");
	$conta=0;
	foreach($imm['immagine']['type'] as $tipo){
		if($tipo !=""){//da verificare se serve
			if(!in_array($tipo,$ammesse)){
				unset($imm['immagine'][][$conta]);//non essendo una immagine la elimino tutto name/type.. relativo a [$conta]
				//l'istruzione sopra ancora da verificare che non si debba fare
				/*
				unset($imm['immagine']['name'][$conta]);
				unset($imm['immagine']['type'][$conta]);
				unset($imm['immagine']['tmp_name'][$conta]);
				ecc.....
				*/
			}
		}
		$conta++;
	}//fine foreach
	$rimaste=count($imm['immagine']['name']);//conte se sono rimaste immagini
	if($rimaste > 0){
		//ci sono delle immagini valide
		return $imm;//ritorno l'array rimasto
	}else{
		return false;
	}
}//fine function
if(isset($_POST['submit'])){
	//var_dump($_FILES['immagine']);
	if(verifica_immagini($_FILES['immagine']){
		$immagini=verifica_immagini($_FILES['immagine']);
		//e quindi le tratto
	}else{
		//e qui da decidere cosa fare se non ci sono immagini
	}
}
?>
<form action='<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>' method='POST' enctype='multipart/form-data'>
	Immagine 1:<input name='immagine[]'  type='file' multiple='multiple'/> <br> <br>
	<input name='submit' type='submit' value='Salva' />
</form>

mi sta fumando la testa per cercare di risolverti:cool:
 
Ciao

Ciao,

Mi spiace farti fondere forse chiedo troppo. Lo provo e poi ti dico. Intanto stavo cercando anche di capire se il mio server (synology), l'ho configurato bene per invio delle email nella fase di registrazione. Fra poco ti darò il risultato. Grazie.
 
ciao
se ti può servire un esempio di controllo per inserimento multiplo.
fai delle prove di verifica

PHP:
<!-- esempio di out put del var_dump selezionando più immagini
array(5) { ["name"]=> array(3) { 
				[0]=> string(5) "3.gif" 
				[1]=> string(5) "1.gif" 
				[2]=> string(5) "2.gif" } 
			["type"]=> array(3) { 
				[0]=> string(9) "image/gif" 
				[1]=> string(9) "image/gif" 
				[2]=> string(9) "image/gif" } 
			["tmp_name"]=> array(3) { 
				[0]=> string(26) "C:\WINDOWS\TEMP\php274.tmp" 
				[1]=> string(26) "C:\WINDOWS\TEMP\php275.tmp" 
				[2]=> string(26) "C:\WINDOWS\TEMP\php276.tmp" } 
			["error"]=> array(3) { 
				[0]=> int(0) 
				[1]=> int(0) 
				[2]=> int(0) } 
			["size"]=> array(3) { 
				[0]=> int(956) 
				[1]=> int(842) 
				[2]=> int(901) } 
			} 
-->
<?php
function verifica_immagini($imm){
	$ammesse=array("image/gif","image/jpeg","image/pjpeg","image/png");
	$conta=0;
	foreach($imm['immagine']['type'] as $tipo){
		if($tipo !=""){//da verificare se serve
			if(!in_array($tipo,$ammesse)){
				unset($imm['immagine'][][$conta]);//non essendo una immagine la elimino tutto name/type.. relativo a [$conta]
				//l'istruzione sopra ancora da verificare che non si debba fare
				/*
				unset($imm['immagine']['name'][$conta]);
				unset($imm['immagine']['type'][$conta]);
				unset($imm['immagine']['tmp_name'][$conta]);
				ecc.....
				*/
			}
		}
		$conta++;
	}//fine foreach
	$rimaste=count($imm['immagine']['name']);//conte se sono rimaste immagini
	if($rimaste > 0){
		//ci sono delle immagini valide
		return $imm;//ritorno l'array rimasto
	}else{
		return false;
	}
}//fine function
if(isset($_POST['submit'])){
	//var_dump($_FILES['immagine']);
	if(verifica_immagini($_FILES['immagine']){
		$immagini=verifica_immagini($_FILES['immagine']);
		//e quindi le tratto
	}else{
		//e qui da decidere cosa fare se non ci sono immagini
	}
}
?>
<form action='<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>' method='POST' enctype='multipart/form-data'>
	Immagine 1:<input name='immagine[]'  type='file' multiple='multiple'/> <br> <br>
	<input name='submit' type='submit' value='Salva' />
</form>

mi sta fumando la testa per cercare di risolverti:cool:


Perdonami,

Ma l'arry iniziale dove va messo ??? in un singolo file o prima di tutto l'esempio che mi hai postato ????
 
Ciao,

Ti mando in allegato quello che ho fatto, e mi da un errore sulla linea else che ora ti estrapolo dalla lista. Questa è l'errore:

PHP:
if(isset($_POST['submit'])){
    //var_dump($_FILES['immagine']);
    if(verifica_immagini($_FILES['immagine']){
        $immagini=verifica_immagini($_FILES['immagine']);
        //e quindi le tratto
    [B]}else{     <-------- ERRORE[/B]
        //e qui da decidere cosa fare se non ci sono immagini
    }
}

Facendolo girare, non sto più lavorando in localhost ma tutto sul synology, speravo che mi segnalasse il tipo di errore ma invece mi da una pagina bianca :(
 
ciao
l'arry che ho messo all'inizio non va da nessuna parte è solo un esempio per capire come si forma l'array in caso di selezione multipla.
ora guardo quell'else poi ti so dire
 
ciao
avevo fatto un paio di put....te, ecco il corretto

PHP:
<?php
function verifica_immagini($imm){
	$ammesse=array("image/gif","image/jpeg","image/pjpeg","image/png");
	$conta=0;
	//var_dump($imm);
	foreach($imm['type'] as $tipo){
			if(!in_array($tipo,$ammesse)){
				unset($imm['name'][$conta]);
				unset($imm['type'][$conta]);
				unset($imm['tmp_name'][$conta]);
				unset($imm['error'][$conta]);
				unset($imm['size'][$conta]);
			}
		$conta++;
	}//fine foreach
	$rimaste=count($imm['name']);//conte se sono rimaste immagini
	if($rimaste > 0){
		//ci sono delle immagini valide
		return $imm;//ritorno l'array rimasto
	}else{
		return false;
	}
}//fine function
if(isset($_POST['submit'])){
	//var_dump($_FILES['immagine']);
	if(verifica_immagini($_FILES['immagine'])){
		
		$immagini=verifica_immagini($_FILES['immagine']);
		print_r($immagini); echo "<br>";
		//e quindi le tratto
	}else{
		echo "non ci sono immagini<br>";
		//e qui da decidere cosa fare se non ci sono immagini
	}
}
?>
<form action='<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>' method='POST' enctype='multipart/form-data'>
	Immagine 1:<input name='immagine[]'  type='file' multiple='multiple'/> <br> <br>
	<input name='submit' type='submit' value='Salva' />
</form>

p.s.
corretto lo script, non il caffè
 
Ciao

Ciao,

Per me sei un grande anche se fai errorri. Anche i medici quando segnano le ricette fanno degli errori madornali. Quindi tutto nella norma. Anzi grazie ancora che mi stai aiutando e scusa se ogni tanto sparisco, ma non me la sto passando bene in questo periodo. il 02/01/2012 mi è scattato il defibrillatore a 195 battiti al min, una piccola scarica elettrica e dopoo pop sono entrato in un'ansia e nello stesso credo anchge in piccola depressione. Però mis to curando e già va meglio. Solo che come tutti, abbiamo alti e bassi. Ti do l'esito dello script se va o meno. Grazie ancora.
 
Ciao

Ho provato lo script, mi carica le foto ma non so se me le salva in un database, ma non credo, e mi visualiza questo:

Array ( [name] => Array ( [0] => 100_3899_remake.jpg [1] => 11082010120.jpg ) [type] => Array ( [0] => image/jpeg [1] => image/jpeg ) [tmp_name] => Array ( [0] => /var/spool/php/phpPDXDht [1] => /var/spool/php/phpc8VJGK ) [error] => Array ( [0] => 0 [1] => 0 ) [size] => Array ( [0] => 1244330 [1] => 787251 ) )

Provo ad inviarti uno screen del mio video. Spero che riesci a visualizzare l'immagine. L'ho fatto con lo strumento di cattura immagine di windows.

A questo punto dovrei solo trovare il metodo di memorizzare il link nel database chiamato imagini o sbaglio ????
 

Discussioni simili