Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

lendadomato

Enviar imagem com jpgEncoder para email

Recommended Posts

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!

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

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");
}
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

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;
}



Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.