Archive for Varie ed eventuali

File upload in Ajax

Con questo breve tutorial vedremo come realizzare un elementare sistema di file upload usando PHP e Ajax.
A dire la verità non è possibile realizzare un sistema di file-upload in Ajax puro a causa delle limitazioni di Javascript (su cui si basa Ajax) in campo di sicurezza.
La soluzione è quella di simulare l’effetto asincrono tramite un iframe.

Abbiamo quindi bisogno di:

  • Un form HTML
  • Un javascript che esegua una animazione, chiamato al submit del form.
  • Uno script PHP che esegua l’upload vero e proprio
  • Un iframe invisibile nella stessa pagina del form

Il form HTML è davvero semplice, c’è un campo per la scelta del file e un bottone.
Da notare il parametro enctype che indica il tipo di codifica.

<form action="upload.php" enctype="multipart/form-data" method="post"> File: <input name="myfile" type="file" />
<input name="submitBtn" type="submit" value="Upload" />
</form>

A questa pagina c’è da aggiungere un blocco che mostrerà l’animazione durante l’upload e per dare la conferma all’utente che l’operazione è riuscita. Inoltre, come già detto, aggiungiamo un iframe invisibie da usare come target del form.

<p id="f1_upload_process">Loading...
<img src="loader.gif" alt="" /></p>
<p id="result"></p>
<form action="upload.php" enctype="multipart/form-data" method="post"> File: <input name="myfile" type="file" />
<input name="submitBtn" type="submit" value="Upload" />
</form>
<iframe id="upload_target" name="upload_target" src="#" style="width:0;height:0;border:0px solid #fff;"></iframe>

Scriviamo adesso la semplice funzione javascript che rende il blocco contenente l’animazione visibile sulla pagina.

      function startUpload(){
      document.getElementById('f1_upload_process').style.visibility = 'visible';
      return true;
      }

E di riflesso scriviamo anche la funzione che verrà chiamata al termine del processo per mostrare un messaggio all’utente e fermare l’animazione.

      function stopUpload(success){
      var result = '';
      if (success == 1){
      document.getElementById('result').innerHTML =
      '<span class="msg">The file was uploaded successfully!< \/span><br /><br />';
      }
      else {
      document.getElementById('result').innerHTML =
      '<span class="emsg">There was an error during file upload!< \/span><br /><br />';
      }
      document.getElementById('f1_upload_process').style.visibility = 'hidden';
      return true;
      }
</span></span>

Visto che ci siamo diamo un po’ di stile al nostro form con qualche regola CSS

      #f1_upload_process{
      z-index:100;
      position:absolute;
      visibility:hidden;
      text-align:center;
      width:400px;
      margin:0px;
      padding:0px;
      background-color:#fff;
      border:1px solid #ccc;
      }
 
      form{
      text-align:center;
      width:390px;
      margin:0px;
      padding:5px;
      background-color:#fff;
      border:1px solid #ccc;
      }

Ora passiamo alla parte server.
Dovrebbe essere abbastanza semplice da capire, spieghiamo comunque qualcosa. Prima di tutto andiamo a settare il percorso di destinazione del file. Poi introduciamo una variabile che ci conterrà l’eventuale errore in fase di upload del file.
Procediamo quindi a spostare il file dalla directory temporanea alla sua destinazione finale.
Il codice PHP dovrebbe essere una cosa del genere

< ?php
$destination_path = getcwd().DIRECTORY_SEPARATOR;
$result = 0;
$target_path = $destination_path . basename( $_FILES['myfile']['name']);
if(@move_uploaded_file($_FILES['myfile']['tmp_name'], $target_path)) {
$result = 1;
}
sleep(1);
?>

Come visto nelle proprietà del form il codice PHP verrà eseguito all’interno dell’iframe nascosto. A questo punto non ci rimane che aggiungere al suo interno il codice js che chiamerà la funzione scritta precedentemente e che notificherà l’utente se l’upload è andato a buone fine o meno

      <script language="javascript" type="text/javascript">
      window.top.window.stopUpload(< ?php echo $result; ?>);
      </script>

Cosa vi avevo detto? Facile e veloce.
Se vi siete persi qualche passaggio o non vi è del tutto chiaro il funzionamento, se volete farmi i complimenti o mandarmi a cag*re, se volete invitarmi a cena fuori fatelo pure nei commenti.

Ping this!

One million $ question

In tutta sincerità, se io scrivessi un post serio sulla riapertura di BlogBabel voi continuereste a leggermi?

Forse meglio impegnarmi a scrivere di più…

Technorati Tags:

Ping this!

Fringe si, Fringe no

Ho visto il preair di Fringe, la nuova serie Tv del maestro J.J. Abrams.

Non lo so, non mi ha convinto. Ora non voglio spoilerare ma mi aspettavo una qualcosa tipo Lost, cioè che dall’inizio non ci capisci niente e continui a farlo fino alla fine.

  Fringe inizia come Lost, un aereo che precipita, ma le somiglianze sembrano fermarsi qui. Dal pilot sembrerebbe che tutte le puntate faranno storia a se, un po’ come succedeva con X-Files, ma dietro ci sarà sempre un filo conduttore unico.

La cosa che non mi convince molto è che già dalla prima puntata molte cose vengono rivelate, sembra che Abrams&Co. vogliano puntare meno sulla suspence a lungo termine e più sull’effetto sopresa in ogni singola puntata.

Avrei altri dubbi ma ho paura di spoilerare e far incazzare il Tencar, per ora mi fermo qui, ci rivediamo il 9 Settembre data dell’inizio ufficiale della serie.

P.S. avete visto chi è l’uomo di colore nella foto?

Technorati Tags: ,,

Ping this!

A me, le stelle, non mi guardano proprio

Dopo il grande successo che sta avendo sul blog di MirrorMasque, la carissima Momix74 si è offerta (di sua spontanea volontà, nevvero?) di scrivere il mio oroscopo per il prossimo anno.

Dovrebbe essere valido per tutti i nati sotto il segno dei Gemelli, vediamo:

Generale

Per quanto riguarda questo VOSTRO nuovo anno le Stelle dicono che sarà caratterizzato dalle novità, un po’ in tutti i campi.

Avrete sempre la battuta pronta, nessuno riuscirà a mettervi in difficoltà! Qualche volta però dovrete cercare di darvi un freno, poiché qualcuno, soprattutto in famiglia, potrebbe prendersela a male …

Per quest’anno stessa spiaggia, stesso mare?? Non importa se non riuscerete ad assecondare Nettuno che porta verso mari lontani, quest’anno sarà piacevole restare nell’ambiente vicino, visto che sarà spesso richiesta la vostra presenza in famiglia .. che ci volete fare, vi adorano!

Amore:

Per quanto riguarda l’amore, sono previsti nuovi ed interessanti incontri durante i mesi estivi (in particolar modo Luglio/Agosto)… attenzione però, potreste scambiare per duraturo quello che invece magari é una semplice avventura … non fatevi prendere la mano e andateci coi piedi di piombo: divertitevi, per una volta non fate castelli in aria e vivete il momento per quello che é, cercando di trarre il meglio  … :D

In autunno invece potreste davvero incontrare una persona "speciale" e lì, allora, potreste essere voi ad essere "spaventati" dalla situazione e a cercare di prendere tempo … non lasciatevi sfuggire l’occasione, tergiversate se lo ritenete opportuno (é sempre meglio valutare bene con chi si ha a che fare ..) ma non troppo o rischiate davvero di far scappare quella che potrebbe essere la "persona giusta" a gambe levate! ;)

Lavoro:

Favoriti anche studio e lavoro: avrete la concentrazione giusta che vi permetterà di ottenere degli ottimi risultati … Dovrete faticare un po’, é vero, ma alla fine i vostri sforzi saranno premiati!

Durante i mesi estivi avvertirete la stanchezza di tutto l’inverno e avrete solo voglia di divertirvi, vi distrarrete facilmente e diciamo pure che il lavoro sarà l’ultimo dei vostri pensieri, ma a partire da settembre vi rimetterete in pista alla grande e recupererete la forza e l’energia necessaria per raggiungere i vostri obiettivi … entro la fine del 2008 ci saranno novità interessanti ;)

Il Consiglio delle Stelle:

Non siate troppo impulsivi, avete già pagato abbastanza per questo vostro lato caratteriale, non vi pare?!? Fate attenzione perché davvero rischiate di mandare tutto a monte solo perché non riflettete abbastanza prima di agire … state calmi e cercate di guardare sempre la situazione "dall’esterno" prima di prendere qualsiasi decisione o di dire qualsiasi cosa … vedrete che se riuscirete a riacquistare la lucidità necessaria, tutto filerà liscio come l’olio ;)

Che dire, grazie Monica e speriamo che si avveri un po’ tutto…

Ping this!

Quindici minuti di gloria

Per la serie: le piccole cose che rendono un giorno migliore

Ore 12.47 – è il compleanno del boss che mi offre un mini-babà ed in pratica finisco di lavorare 15 minuti prima

ore 12.54 – il boss mi chiama e mi consegna il mio primo stipendio

ore 12.58 – esco dall’uffico, “sbatto” contro una bellissima ragazza e ci scambiamo un timido sorriso

ore 13.00 – nella strada dove ho parcheggiato, la mia auto è l’unica a non essere bloccata da altre macchine posteggiate in doppia fila.

ore 13.03 – la chicca. il passaggio a livello non si è ancora chiuso, evito la coda di auto sotto il sole bollente

il resto della giornata è stato una merda ma questa è un’altra storia.

Ping this!
Text Link Ads