Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
BitmapData从Flash到PHP再到电子邮件_Php_Flash_Mime - Fatal编程技术网

BitmapData从Flash到PHP再到电子邮件

BitmapData从Flash到PHP再到电子邮件,php,flash,mime,Php,Flash,Mime,更新:见消息底部 大家好,问题是: 我试图在Flash中拍摄一个电影剪辑的“截图”,使用as核心库JPGEncoder类将其编码为Jpg,然后将其提交到PHP,并将图像嵌入MIME编码的电子邮件中 目前,我已经测试了在本地保存编码的图像,这是可行的,因此编码器肯定是可行的。电子邮件发送,它有一个100kb的jpg附件,但是,图像似乎包含坏数据,因为它无法在任何应用程序中正常打开 以下是动作脚本: trace("Sending Email"); var rootMC:MovieClip =

更新:见消息底部

大家好,问题是: 我试图在Flash中拍摄一个电影剪辑的“截图”,使用as核心库JPGEncoder类将其编码为Jpg,然后将其提交到PHP,并将图像嵌入MIME编码的电子邮件中

目前,我已经测试了在本地保存编码的图像,这是可行的,因此编码器肯定是可行的。电子邮件发送,它有一个100kb的jpg附件,但是,图像似乎包含坏数据,因为它无法在任何应用程序中正常打开

以下是动作脚本:

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); 
require_once'lib/swift_required.php';
$image=文件\u获取\u内容(“php://input");  
$attachment=SwiftAttachment::newInstance($image,'submission.jpg','image/jpg')//setSubject(“您的主题”)
/*使用关联数组设置发件人地址*/
->setFrom(数组('info@battleforbrisbane.com.au“=>”布里斯班之战“)
/*将设置为具有关联数组的地址*/
->设置为(数组('jordaanm@gmail.com'))  
/*给它一个身体*/
->setBody(“祝贺你!你提交给布里斯班战役的申请已收到”);
$message->attach($attachment)//发送($message);
更新:我现在正在使用,而不是手动写出MIME。然而,这里有一个新政:在php代码中,我标记了一行,将发布的图像数据作为jpg附加到电子邮件中。如果我注释掉这一行,并在信息->附加行中添加注释,则每个行都会发送罚款。但是,如果它们没有注释,那么就不会发送电子邮件,这让我相信,试图从提供的数据创建jpg附件是导致问题的原因。
这一切都证实了我的怀疑,即PHP脚本接收到的数据是不正确的。多么好和令人沮丧。

< P>你应该认真考虑,而不是建立自己的MIME头和身体。正如你现在所意识到的,用手正确地做这件事可能是一件非常痛苦的事情


在假设是邮件出错之前,还应该确保PHP接收的数据实际上是一个坏图像。请尝试将
文件的结果\u get\u contents
保存到磁盘,并在浏览器中查看,以确保正确无误。

我稍微超出了我的舒适区,但我相信您可能需要添加更多的标题信息

Jonathan Marston创建了一个包装器类来实现这一点,可以在下面找到:

您可以通过以下方式尝试使用:

var byteArray : ByteArray = new JPGEncoder( 80 ).encode( data1);
var wrapper = new URLRequestWrapper(byteArray, "submission.jpg");
wrapper.url = mailLoc;

var ldr:URLLoader = new URLLoader();
ldr.dataFormat = URLLoaderDataFormat.BINARY;
ldr.addEventListener(Event.COMPLETE, MailCompleteHandler);
ldr.load(wrapper.request);

由于您可以将图像保存在服务器上并查看它,因此问题与Flash无关,除了chunk_split/base64编码外,保存图像与通过电子邮件发送图像还有什么不同?您是否尝试过使用保存在服务器上的JPG发送相同的电子邮件程序?引用OP“目前,我已经测试了在本地保存编码图像,这很有效”。。。同意像SwiftMailer这样的库比自己的库更直截了当,更不容易出错+1现在就用迅捷邮递。使代码更清晰,但图像附件问题仍然存在。您可以上传一个小图像(1x1像素的gif或png如何),通过邮件发送,然后发布一个指向该图像的链接,并从邮件中提供完整的原始源代码吗?此外,关于Charles的删除点,我无法将其保存在服务器上。我可以从flash本地保存它。我曾尝试在php脚本中使用fwrite,但从未输出任何文件。真烦人。不过,这对我来说确实很确定,问题出在从Flash->PHPTook发送给我的过程中。我试了几次,最终发现我在Swift_附件中遗漏了一个下划线。谢谢你的建议