Ir para conteúdo

POWERED BY:

Arquivado

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

Jonas Cowboy

[Resolvido] caminho absoluto/relativo para FileReference

Recommended Posts

Oi pessoal, precisava de uma ajuda de voces para resolver 2 problemas com a propriedade FileReference

 

Seguinte, eu fiz uma galeria de imagem e nela possui um botão de download (instancia "downloads") para que o usuário possa salvar a imagem no computador pelo esquema "Save as". Nesse botão coloquei a seguinte linha de código (na frame do botão)

 

stop();


import flash.net.FileReference;

var referece:FileReference = new FileReference();

_root.downloads.onRelease = function(){
	referece.download("http://www.meusite.com.br/FSCOMMAND/img01.JPG","img01.jpg");
}

Até ai maravilha, ele salva a imagem numa boa no computador, mas me surgiu um problema: eu queria transformar esse caminho absoluto para um caminho relativo (FSCOMMAND/img01.jpg) mas quando eu faço isso aparece a tela de salvar mas o arquivo não salva, o servidor não consegue reconhecer o caminho da imagem grande. Eu queria que esse código funcionasse mas usando um caminho relativo para a imagem e não um absoluto.

 

Outro problema que me veio é que quando aparece a tela de "Salvar como" tem o nome inicial do arquivo (que é "img01.jpg"), quando salva direto dá tudo certo, ele salva como imagem. Mas se eu troco o nome ele não reconhece o formato JPEG e salva como um "formato desconhecido". Como que eu posso resolver isso, de deixar o arquivo com a extensão JPEG independendo se o usuário mudar o nome do arquivo.

 

Não sei se fui claro, se alguem puder me ajudar vai quebrar um galho! Abs!

Compartilhar este post


Link para o post
Compartilhar em outros sites

O método FileReference.download() não aceita arquivos locais. A documentação do ActionScript 2 diz "[...] This method first opens an operating system dialog box that asks the user to enter a filename and select a location on the local computer to save the file. When the user selects a location and confirms the download operation (for example, by clicking Save), the download from the remote server begins. [...] The dialog box could fail to be displayed for any of the following reasons: [...] * The protocol is not HTTP or HTTPS.".

 

Há alguns dias, você fez uma pergunta sobre o mesmo tema (http://forum.imasters.com.br/index.php?s=&showtopic=348195&view=findpost&p=1315949) e eu lhe apresentei uma alternativa funcional para imagens no AS 3.

Compartilhar este post


Link para o post
Compartilhar em outros sites

O método FileReference.download() não aceita arquivos locais. A documentação do ActionScript 2 diz "[...] This method first opens an operating system dialog box that asks the user to enter a filename and select a location on the local computer to save the file. When the user selects a location and confirms the download operation (for example, by clicking Save), the download from the remote server begins. [...] The dialog box could fail to be displayed for any of the following reasons: [...] * The protocol is not HTTP or HTTPS.".

 

Há alguns dias, você fez uma pergunta sobre o mesmo tema (http://forum.imasters.com.br/index.php?s=&showtopic=348195&view=findpost&p=1315949) e eu lhe apresentei uma alternativa funcional para imagens no AS 3.

Vlw Bruno, mas a minha questão é o seguinte: to sabendo que o FileReference só aceita arquivos que estão em um servidor, mas a questão é que a minha galeria de foto, quando eu testo para ver se o FileReference funciona eu subo em um servidor que eu tenho, o meu problema é o seguinte: como no final do meu projeto não sou eu que vou subir os arquivos das imagens no meu servidor mas o programador do meu cliente, eu não sei exatamente em qual diretório que o meu cliente vai subir no servidor dele para estabelecer um caminho absoluto para as imagens, por isso que eu queria fazer um caminho relativo, para quando o programador subir os arquivos no servidor ele puxar as imagens de uma pasta chamada FSCOMMAND (o swf e o html que tem o site se encontram no mesmo lugar da pasta FSCOMMAND). Se desse pra fazer esse caminho relativo não interessava onde o meu cliente colocasse, desde que a pasta FSCOMMAND estivesse junto com o swf.

 

É o mesmo esquema quando eu aplico a propriedade getURl(); do AS, para que meu site abre uma imagem em um browser não preciso colocar o caminho absoluto como por exemplo:

 

on(release){

getURL("http://www.meusite.com.br/imagens/imagem.jpg","_blank")

}

bastaria só colocar o caminho relativo, se a pasta "imagens" estivesse no mesmo caminho do servidor:

 

on(release){

getURL("imagens/imagem.jpg","_blank")

}

Não sei se consegui explicar direito a minha duvida, se puder me dar uma força vai quebrar uma arvore

 

E desculpa pelo Flood berseck, não vai acontecer de novo

 

Abs!

Compartilhar este post


Link para o post
Compartilhar em outros sites

import flash.net.FileReference;

var urlrelativa:String = _url.substring(0, _url.lastIndexOf("/")+1);

var referece:FileReference = new FileReference();

_root.downloads.onRelease = function(){
	referece.download(urlrelativa + "img01.JPG","img01.jpg");
}

Como disse antes, o FileReference só funciona nos protocolos HTTP e HTTPS, portando não vai funcionar se testar no ambiente de criação do Flash.

Compartilhar este post


Link para o post
Compartilhar em outros sites

import flash.net.FileReference;

var urlrelativa:String = _url.substring(0, _url.lastIndexOf("/")+1);

var referece:FileReference = new FileReference();

_root.downloads.onRelease = function(){
	referece.download(urlrelativa + "img01.JPG","img01.jpg");
}

Como disse antes, o FileReference só funciona nos protocolos HTTP e HTTPS, portando não vai funcionar se testar no ambiente de criação do Flash.

Vlw Bruno, Mas o flash vai reconhecer os arquivos que estão na pasta FSCOMMAND?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Provavelmente, desde que o swf também esteja nesta pasta.

E como que eu coloco quando o swf se encontra fora dessa pasta? Pq a programação que eu coloquei o swf está na pasta principal, e o FSCOMMAND é uma subpasta (lá que estão todas as imagens)

 

Abs!

Compartilhar este post


Link para o post
Compartilhar em outros sites

import flash.net.FileReference;

var urlrelativa:String = _url.substring(0, _url.lastIndexOf("/")+1);

var referece:FileReference = new FileReference();

_root.downloads.onRelease = function(){
	referece.download(urlrelativa + "FSCOMMAND/img01.JPG","img01.jpg");
}

Só não sei o que você espera dessa pasta, já que fscommand() só funciona em executáveis.

Compartilhar este post


Link para o post
Compartilhar em outros sites

import flash.net.FileReference;

var urlrelativa:String = _url.substring(0, _url.lastIndexOf("/")+1);

var referece:FileReference = new FileReference();

_root.downloads.onRelease = function(){
	referece.download(urlrelativa + "FSCOMMAND/img01.JPG","img01.jpg");
}

Só não sei o que você espera dessa pasta, já que fscommand() só funciona em executáveis.

Opa Bruno, valeu pela ajuda. A pasta FSCOMMAND é só nome do diretório, coloquei esse nome porque estava passando de um executavel para site (é uma longa história uasuhas)

 

Mas valeu, quebrou um galho enorme! Abs!

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.