Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá pessoal,
como podem ver a classe jpgEncoder faz um print do
mc e salva a imagem no computador do visitante, seria
possível usar o mesmo botão de "salvar" para enviar a imagem
para um email simultaneamente? e como o farei?
tenho o seguinte codigo:
import com.adobe.images.JPGEncoder;
import flash.events.MouseEvent;
var file:FileReference = new FileReference();
var jpgSource:BitmapData = new BitmapData (meu_mc.width, meu_mc.height);
jpgSource.draw(meu_mc,new Matrix());
var jpgEncoder:JPGEncoder = new JPGEncoder(100);
var jpgStream:ByteArray = jpgEncoder.encode(jpgSource);
// Download
btn_salvar.addEventListener(MouseEvent.CLICK, downloadIMG);
function downloadIMG (event:MouseEvent) {
file.save(jpgStream,'imagem.jpg');
}
fico no aguardo!
>
você vai ter que mandar a imagem para o servidor,
e lá você faz a operação de mandar o email com ela,
ou de forma anexa, ou você deixa a imagem numa pasta,
e coloca no email a url de onde esta esta
[]´s
amigo Eder,
enviando para o servidor pra mim seria uma mão na roda, mas
eu não sei como deve proceder para fazer o upload do BitmapData
e enviar com o mesmo evento do botão que salva.
cara, tem muitas maneiras, vai depender ser você usar AMF ou vai mandar por POST mesmo
e quando chegar no servidor, você vai pegar o conteúdo da variável, e transformar em imagem
dá uma pesquisada por upload BitmapData
[]´s
Eder,
andei dando uma lida por aí e quando vou enviar para
o servidor da o seguinte erro:
Error: Error #2174: Apenas uma operação de download, upload, carregamento ou gravação pode estar ativa por vez em cada FileReference.
pessoal,
consegui salvar e enviar para o email, mas
o anexo não chega, onde estou errando?
import com.adobe.images.JPGEncoder;
import flash.events.MouseEvent;
var file:FileReference = new FileReference();
var jpgSource:BitmapData = new BitmapData (meu_mc.width, meu_mc.height);
jpgSource.draw(meu_mc,new Matrix());
var jpgEncoder:JPGEncoder = new JPGEncoder(100);
var jpgStream:ByteArray = jpgEncoder.encode(jpgSource);
var req:URLRequest = new URLRequest("upload_dados.php");
req.contentType = "application/octet-stream";
req.method = URLRequestMethod.POST;
req.data = jpgStream;
var loader:URLLoader = new URLLoader();
loader.dataFormat = URLLoaderDataFormat.VARIABLES;
var variables:URLVariables = new URLVariables();
variables.attach = 0;
file.addEventListener(Event.SELECT, fileAdded);
// Download
btn_salvar.addEventListener(MouseEvent.CLICK, salvarImagem);
function salvarImagem (event:MouseEvent) {
file.save(jpgStream,'imagem.jpg');
loader.load(req);
}
function fileAdded(e:Event):void {
variables.attach = 1;
}
aqui o php:
<?php
$para = "seuemail@seudominio.com.br";
$assunto = "Teste";
$bound = "XYZ-" . date("dmYis") . "-ZYX";
if (($fp = fopen($_FILES['Filedata']['tmp_name'],"rb")))
{
$anexo = fread($fp,filesize($_FILES['Filedata']['tmp_name']));
$anexo = base64_encode($anexo);
fclose($fp);
$anexo = chunk_split($anexo);
}
if ($anexo)
{
$mensagem = "--$bound\nContent-type: text/html\nContent-Transfer-Encoding: 7bit\n\n$corpo\n\n"
. "--$bound\nContent-type: $_FILES[Filedata][type]\nContent-Disposition: attachment; filename=" . $_FILES['Filedata']['name'] . "\nContent-Transfer-Encoding: base64\n\n$anexo\n"
. "--$bound\r\n";
mail($para,$assunto,$mensagem,"From: \nMIME-Version: 1.0\nContent-type: multipart/mixed; boundary=\"$bound\"");
}
else
{
mail($para,$assunto,$corpo,"Content-type: text/html");
}
?>se eu uso o load
loader.load(req);
não retorna nenhum erro mas
o anexo não chega,
se uso o upload
loader.upload(req);
da não chega nem o email nem o anexo e da o seguinte erro:
Error: Error #2174: Apenas uma operação de download, upload, carregamento ou gravação pode estar ativa por vez em cada FileReference.
não testei, mas acho que faltou isso:
var variables:URLVariables = new URLVariables();
variables.name = "imgName";
variables.type = ".jpg";
variables.image = jpgStream;
var req:URLRequest = new URLRequest("upload_dados.php");
req.contentType = "application/octet-stream";
req.method = URLRequestMethod.POST;
req.data = variables
e no PHP, você mandou por POST, não é um $_FILES:
$anexo = base64_decode($_POST['image'])
[]´s
amigo Eder,
não funcionou, na verdade esse codigo é parte de um upload de
arquivos atravéz do browser e eu tentei fazer uma adaptação mas não consegui,
o codigo abaixo funciona com o php postado acima, se você puder me ajudar fico muito agradecido:
/ by futre peopleforfun.com /
import fl.managers.StyleManager;
import com.adobe.images.JPGEncoder;
import flash.events.MouseEvent;
var URLrequest:URLRequest = new URLRequest("upload_dados.php");
URLrequest.method = URLRequestMethod.POST;
var imageFilter:FileFilter = new FileFilter("Images (*.jpg, *.gif, *.png)", "*.jpg; *.gif; *.png");
var textFilter:FileFilter = new FileFilter("Documents (*.txt, *.doc, *.pdf)", "*.txt; *.doc; *.pdf");
var archiveFilter:FileFilter = new FileFilter("Archive (*.zip, *.rar)", "*.zip; *.rar;");
var filter:Array = new Array(imageFilter, textFilter, archiveFilter);
var file:FileReference = new FileReference();
var loader:URLLoader = new URLLoader();
loader.dataFormat = URLLoaderDataFormat.VARIABLES;
var variables:URLVariables = new URLVariables();
variables.attach = 0;
file.addEventListener(Event.SELECT, fileAdded);
browse_btn.addEventListener(MouseEvent.CLICK, browseFile);
send_btn.addEventListener(MouseEvent.CLICK, sendVars);
function browseFile(e:MouseEvent):void {
file.browse(filter);
}
function sendVars(e:MouseEvent):void {
file.upload(URLrequest);
}
function fileAdded(e:Event):void {
variables.attach = 1;
}como eu falei, existem varias maneiras, você pode usar o file.upload(), que ele só vai mandar
a imagem para o servidor, como se fosse um form em HTML, ai sim você recupera ela com um $_FILES
agora se for usando o loader.load(), para mandar outras informações junto, é da maneira que mostrei pela variável $_POST
eu tô sem "estrutura" aqui para testar, mas pega algum code pronto na web que use o loader.load, e testa para ver
[]´s
andei procurando muito na Web e o que eu encontrei
foi em as2 com a classe "BitmapExporter" , eu abri o codigo para
estudar e não entendi muito pois tem uma mistura de as2 com as3.
você vai ter que mandar a imagem para o servidor,
e lá você faz a operação de mandar o email com ela,
ou de forma anexa, ou você deixa a imagem numa pasta,
e coloca no email a url de onde esta esta
[]´s