6 Marzo 2008
File Upload con Flash e PHP
Già da diverso tempo è stata introdotta la classe actionscript flash.net.FileReference che permette la gestione degli upload/download da Flash Player.
Abbiamo già usato in Webgriffe questa classe per diversi progetti web, in particolare per backoffice e web applications, ma recentemente ci siamo scontrati con un malfunzionamento di questo tipo di implementazione su un sito in Flash ospitato su TopHost al quale dovevamo permettere l’upload di curricula tramite form.
Accadeva che all’atto dell’upload il file non veniva scritto sul server ma veniva restituito un HTTPError 406.
Il problema si presentava solo sul server di TopHost e consultando le FAQ e la guida tecnica fornita dal mantainer abbiamo concluso che era causato da impostazioni di sicurezza. In pratica TopHost blocca l’attribuzione di permessi a file e cartelle superiori al chmod 0750.
Per completezza di informazione riporto il code actionscript utilizzato:
import flash.net.FileReference;var fileTypes:Array = new Array();
var allowedTypes:Object = new Object();
allowedTypes.description = "Documenti (*.pdf, *.doc, *.rtf, *.txt)";
allowedTypes.extension = "*.pdf; *.doc; *.rtf; *.txt";
fileTypes.push(allowedTypes);
var fileRef:FileReference = new FileReference();
var listener:Object = new Object();
listener.onComplete = function() {
trace("CURRICULUM FILE UPLOADED!");
};
listener.onHTTPError = function(file:FileReference, error:Number):Void {
trace("onHTTPError: " + file.name + " Error: " + error);
}
fileRef.addListener(listener);
curriculaForm.btn_browse.btn.onRelease = function() {
fileRef.browse(fileTypes);
};
e il codice PHP invece
if ($_FILES['Filedata']['name']) {$uploadDir = "/uploadedfiles/curricula/";
$uploadFile = $uploadDir.$_FILES['Filedata']['name'];
move_uploaded_file($_FILES['Filedata']['tmp_name'], $uploadFile);
}
Per aggirare il problema ci sono sostanzialmente due soluzioni da provare.
- Dal pannello di controllo di TopHost cliccare il pulsante “Ripristina spazio web” che reimposta i permessi corretti alle cartelle e ai file del sito.
- Modificare il codice PHP precedente aggiungendo il comando
chmod($uploadFile, 0644)subito dopomove_uploaded_file(...)
Pubblicato in Flash, Actionscript


Abbonati ai Feed RSS di questo Blog
Informazioni su questo blog
Scarica lo screen saver di shines

7 Marzo 2008 alle 08:54
come avete risolto il problema ?
7 Marzo 2008 alle 10:27
Ciao Erny, ho aggiornato il post con le soluzioni che abbiamo utilizzato. Scusami ma mi rendo conto che non era chiaro come era stato risolto il problema. Grazie.