J'essaie de faire une 'capture d'écran' d'un MovieClip dans Flash, l'encoder en Jpg en utilisant la classe AS Core Lib JPGEncoder, puis POST soumettre le ByteArray résultant à PHP, et incorporer l'image dans un e-mail codé MIME.BitmapData de Flash -> PHP -> Email
Actuellement, j'ai enregistré le ByteArray encodé à partir de Flash, et cela fonctionne très bien, donc le problème est dans l'envoi de Flash à PHP. J'utilise SwiftMailer pour envoyer un email complexe avec le jpeg en pièce jointe. Actuellement, le script semble se bloquer au point où je construis la pièce jointe à partir des données envoyées.
Voici le Actionscript:
trace("Sending Email");
var rootMC:MovieClip = MovieClip(root);
var data1:BitmapData = new BitmapData(rootMC.width, rootMC.height);
data1.draw(rootMC);
var en:JPGEncoder = new JPGEncoder(80);
var bArray:ByteArray= en.encode(data1);
var header:URLRequestHeader = new URLRequestHeader("Content-type", "application/octet-stream");
var request:URLRequest = new URLRequest();
request.requestHeaders.push(header);
request.url = mailLoc;//MailLoc is the URL of the PHP.
request.method = URLRequestMethod.POST;
request.data = bArray;
var loader:URLLoader = new URLLoader();
loader.dataFormat = URLLoaderDataFormat.BINARY;
loader.addEventListener(Event.COMPLETE, MailCompleteHandler);
try
{
loader.load(request);
}
catch(error:Error)
{
trace("Unable to load URL");
}
Et voici le PHP:
require_once 'lib/swift_required.php';
$image = file_get_contents("php://input");
$attachment = SwiftAttachment::newInstance($image, 'submission.jpg', 'image/jpg');//<--This line stuffs it
$message = Swift_Message::newInstance()
/*Give the message a subject*/
->setSubject('Your subject')
/*Set the from address with an associative array*/
->setFrom(array('[email protected]'=>'Battle for Brisbane'))
/*Set the to addresses with an associative array*/
->setTo(array('[email protected]'))
/*Give it a body*/
->setBody('Congratulations! You submission to Battle for Brisbane was received');
$message->attach($attachment);//<--When the attachment above is commented out, so is this
$transport = Swift_SendmailTransport::newInstance();
$mailer = Swift_Mailer::newInstance($transport);
$mailer->send($message);
Ceci est un emploi professionnel, de sorte que toute aide serait grandement appréciée.
Mise à jour: Ce n'est pas SwiftAttachment, c'est Swift_Attachment. Manque de soulignement, problème résolu, application fonctionnelle. Merci à tous ceux qui ont posté pour m'aider avec ceci
Cela semble être [une copie exacte de votre question hier] (http://stackoverflow.com/questions/5399235/bitmapdata-from-flash-to-php-to-email). J'aimerais toujours voir la sortie brute d'un GIF 1x1, bien que là-bas, pas ici. – Charles
Ceci est une version raffinée de la question d'hier. Certains des problèmes mineurs ont été résolus par vous-même (en utilisant SwiftMailer maintenant au lieu de coder manuellement). Cependant, le gros problème n'est pas fini. En termes de pixel 1x1, toutes les données que j'envoie à partir de Flash-> PHP refusent d'écrire (fwrite) ou mime attach. –
Est-ce que '$ image' a un' strlen'? – Charles