ОБНОВЛЕНО: СМОТРЕТЬ НИЖЕ СООБЩЕНИЯ
Привет всем, вот проблема: я пытаюсь сделать «скриншот» мувиклипа во Flash, закодировать его как Jpg, используякласс AS Core Lib JPGEncoder, затем POST отправьте его в PHP и вставьте изображение в электронное письмо с кодировкой MIME.
В настоящее время я тестировал сохранение закодированного изображения локально, и это работает, поэтому кодировщикопределенно работает.Письмо отправляется, и в нем содержится jpg-файл размером 100 КБ, как и должно быть, однако изображение содержит неверные данные, поскольку оно не открывается должным образом ни в одном приложении.
Вот код действия:
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");
}
А вот и 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('info@battleforbrisbane.com.au'=>'Battle for Brisbane'))
/*Set the to addresses with an associative array*/
->setTo(array('jordaanm@gmail.com'))
/*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);
Обновление: сейчас я использую SwiftMailer вместо того, чтобы выписывать MIME вручную.Тем не менее, вот новая сделка: в коде php я выделил строку, которая прикрепляет данные изображения POST в виде jpg к письму.Если я закомментирую эту строку, а сообщение -> присоединить строку, то каждый отправляет нормально.Однако, если они не комментируются, электронное письмо не отправляется, что заставляет меня поверить, что попытка создать вложение jpg из предоставленных данных вызывает проблему.Все это только подтверждает мои подозрения, что данные, полученные сценарием PHP, неверны.Как мило и расстраивает.