- Home
- Categorie
- Coding e Sistemistica
- PHP
- Allegato in un form non arriva...
-
E' proprio questa la parte paradossale della storia....di seguito metto un'immagine che non e' altro che lo screenshot della cartella contenente i file del mio form e quella che vedi e' posizionata sul mio computer...ovviamente gli stessi file sono messi tramite FTP nel mio spazio web (non essendo utente premium non posso inserire ne link ne immagini per cui spero tu capisco cio' che sto scrivendo).....ora se io apro il form col browser (io uso safari principalmente) e compilo il form e lo invio senza mettere alcun allegato il form me lo trovo compilato nella mail correttamente...se lo compilo e metto un allegato che ho prelevato dalla cartella documenti...mi esce l'errore che ho messo nel primo post solo che il messaggio arriva comunque ma ovviamente senza allegato....Ora viene il bello se io compilo il form e vado per mettere l'allegato mi apre la schermata dove poterlo scegliere l'allegato giusto??? Ecco...io vado nella cartella attachments dove ho messo dei file di prova (ricordo che i file che vado a prendere li prendo dalla cartella che ho posizionato sul desktop (provvisoriamente per fare delle prove) ma la cartella attacments potrei averla messa ovunque sta di fatto che io pesco il file da li dentro lo allego al form e questo arriva....morale della favola tutto quello che allego e lo pesco dalla cartella attachments che ho sul mio pc arriva senza problemi...se pesco un file che ho nella cartella (documenti) oppure (miacartella) oppure (immagini) non arriva....e' questo che mi sballa....che senso ha che i file che prendo in quella cartella partono mentre quelli che prendo da altri no? spero di essere stato un po' piu' chiaro.
-
Ciao,
per me il problema sta solo nella terza riga e per la soluzione vado un po' a tentativi (so che non è molto professionale$path = "attachments//";
$path = "attachments\";
$path = "./attachments/";
$path = "./attachments//";
-
Prova a modificare il path cosi:
[PHP]$path = "/attachments/";[/PHP]
-
no, niente da fare....mi tocca arrendermi purtroppo....capisco che e' troppo complesso a distanza poter sistemare cose del genere...Grazie a tutti per il tempo dedicato.
-
Non arrenderti!
Tenta questo per l'upload del file:
[PHP]move_uploaded_file($_FILES['attachment']['tmp_name'], basename($path.$_FILES['attachment']['name']));[/PHP]<edit>
Mi sono ricordato di aver fatto degli upload temporanei di file (per poi cancellarli dopo averli processati), ed il codice funziona tutt'ora.
Lo posto di seguito sperando che possa aiutarti
[PHP]//
/* Upload del file
//
$cartella_upload = "./";
if(!isset($_FILES['file_allarmi']) || $_FILES['file_allarmi']==0){
echo "Nessun file selezionato per l'upload</br>";
}else{
$nome_file=$_FILES['file_allarmi']['name'];
$errore="";
if(!file_exists($cartella_upload)){
$errore.="La cartella di destinazione non esiste</br>";
}
if($errore==""){
if(move_uploaded_file($_FILES['file_allarmi']['tmp_name'], $cartella_upload.$_FILES['file_allarmi']['name'])){
chmod($cartella_upload.$_FILES['file_allarmi']['name'],0777); //permessi per poterci sovrascrivere/scaricare
echo "Operazione eseguita con successo. Upload riuscito. Caricato il file ".$nome_file."</br><br>" ;
}else{
echo "Impossibile effettuare l'upload del file</br><br>";
}
}else{
echo $errore;
}
}[/PHP]
</edit>
-
grazie per l'incoraggiamento ma e' frustrante....ehehehehe....comunque anche questa soluzione non funziona e questo e' quello che mi esce appena invio...
Warning: move_uploaded_file(mark.jpg) [function.move-uploaded-file]: failed to open stream: Permission denied in D:\inetpub\webs\mzwit\form\invia.php on line 10
Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move 'C:\PHP\upload\phpA900.tmp' to 'mark.jpg' in D:\inetpub\webs\mzwit\form\invia.php on line 10
Email inoltrata correttamenteIl messaggio arriva ma senza allegato...non capisco per cosa sta quel permesso negato e non capisco soprattutto cosa sia quella directory assurda che mi da errore....da dove proviene? e' qualcosa che fa parte del server dove e' appoggiato il mio sito?perche' io non ho ne e ne dato che uso un mac per cui quella directory deve far parte di qualcosa inerente al server suppongo...(sono appoggiato ad aruba se puo' essere utile)....e premetto che con altro codice in php trovato in altro forum riesco a mandare gli allegati ma con la pecca di non poter convalidare i campi obbligatori mentre in questo form si...in poche parole devo scendere a compromessi o questo ma eliminando il campo attachment oppure l'altro...
-
Se le cose non sono cambiate, è normale dia errore in quanto Aruba concede i permessi in scrittura solo in determinate cartelle (Ad esempio public) perciò la copia in quella cartella genera errore per mancanza di permessi.
-
Allora la cartella attachments/ dovrei metterla nella cartella public e dare la directory giusta? tipo cosi'?
[PHP]<?php
//Percorso dove raccoglieremo gli allegati
$path = "public/attachments/";[/PHP]insomma una cosa del genere?:?
-
Dipende dove si trova lo script, devi considerare che il path corretto inizia da li, per cui se è il caso dovrai inserire il numero corretto di ../
-
Ti consiglio di utilizzare un percorso assoluto per identificare la cartella dove salvare i file. Questo codice ti da il percorso a partire dalla cartella del file in cui lo scrivi:
[PHP]$path = dirname(FILE) . "/attachments";[/PHP]