Ir para conteúdo

Arquivado

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

jadsonlucena

Gerar array com as url's de todos os arquivos selecionados.

Recommended Posts

Galerinha, como eu tinha dito, estou tentando obter os endereços locais completos dos arquivos.

Estou utilizando a class FileReferenceList() para poder fazer a seleção de múltiplos arquivos.

Código completo:

import flash.net.FileReferenceList;
import flash.net.FileFilter;
import flash.events.MouseEvent;
import flash.events.Event;

var fileList:FileReferenceList = new FileReferenceList();
var filter:FileFilter = new FileFilter("Imagens", "*.jpg; *.gif; *.png; *.jpeg");
var files:Array;

btn.addEventListener(MouseEvent.CLICK, openBrowse);

function openBrowse(event:MouseEvent):void {
	fileList.browse(new Array(filter));
	fileList.addEventListener(Event.SELECT, listFile);
}

function listFile(event:Event):void {
	files = event.target.fileList;
	trace(files);
}

 

 

 

Mas estou começando a acreditar que talvez ela não me possibilite esta opção.

Então comecei a pesquisa pela class File() no atributo documentsDirectory:
Código completo:
import flash.filesystem.File;
import flash.net.FileFilter;
import flash.events.MouseEvent;
import flash.events.Event;

var fileToOpen:File = File.documentsDirectory; 
selectTextFile(fileToOpen); 
 
function selectTextFile(root:File):void { 
    var txtFilter:FileFilter = new FileFilter("Imagens", "*.jpg; *.gif; *.png; *.jpeg");
    root.browseForOpen("Open", [txtFilter]); 
    root.addEventListener(Event.SELECT, fileSelected); 
}

function fileSelected(event:Event):void { 
    trace(fileToOpen.nativePath); 
}

 

Mas não importa o que eu faça, sempre me deparo com este erro: Scene 1, Layer 'action', Frame 1, Line 9 1046: Type was not found or was not a compile-time constant: File.

Alguém teria alguma solução para o meu caso???
Grato desde já pela ajuda dos senhores...

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

A classe File, que você está usando no seu código, só está disponível no AIR.

 

Apenas com o Adobe AIR é possível fazer o que você está querendo...

 

Abs,

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá "DesenvolvedorRoger" muito obrigado!

 

Eu segui o seu conselho e fiz este script:

 

import flash.filesystem.File;
import flash.net.FileFilter;
import flash.events.MouseEvent;
import flash.events.FileListEvent;

var file:File = new File();
var filter:FileFilter = new FileFilter("Imagens", "*.jpg; *.gif; *.png; *.jpeg");

btn.addEventListener(MouseEvent.CLICK, openBrowser);

function openBrowser(event:MouseEvent):void {
	file.browseForOpenMultiple("Open", [filter]);
	file.addEventListener(FileListEvent.SELECT_MULTIPLE, fileSelected); 
}

function fileSelected(event:FileListEvent):void { 
    trace([event.target.nativePath]); 
}

 

Mas está dando esta mensagem de erro: Error: Error #2037: Functions called in incorrect sequence, or earlier call was unsuccessful.

at flash.filesystem::File$/_checkPathAccessFor()
at flash.filesystem::File/get nativePath()
at url_fla::MainTimeline/fileSelected()[url_fla.MainTimeline::frame1:17]

Você poderia me dar uma luz??

 

Grato por tudo!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

A intenção era gerar um array de todas as Url dos arquivos.

 

Mas pela sua indagação, acredito que esta não foi uma das melhores tentativas!! :upset:

 

Então fiz desta maneira e funfou blz:

	var str:String = "";
	for (var i:uint = 0; i < event.files.length; i++) {
		if (i < event.files.length -1) {
			str += event.files[i].nativePath + ",";
		} else {
			str += event.files[i].nativePath;
		}
	}
	trace(str);

 

Mas gostaria de saber qual é a maneira mais sucinta de se fazer isso!

Pois acredito que sempre haverá no mínimo duas maneiras de fazer uma programação no AS3. E essa é uma das coisa que amo nesta linguagem.

Compartilhar este post


Link para o post
Compartilhar em outros sites

A intenção era gerar um array de todas as Url dos arquivos.

 

Então crie um Array e preencha ele, oras!

var urls_arr:Array = new Array();

for ( var i:uint = 0; i < event.files.length; i++ ) {

urls_arr.push( event.files[ i ].nativePath );

}

trace( urls_arr.join( " - " ) );

Abs,

Compartilhar este post


Link para o post
Compartilhar em outros sites

Caro "DesenvolvedorRoger", gostaria de saber se teria alguma maneira de conseguir obter a url íntegra de todos os arquivos selecionados.

 

Pois você tinha me indicado o adobe AIR para isso:

 

A classe File, que você está usando no seu código, só está disponível no AIR.

 

Apenas com o Adobe AIR é possível fazer o que você está querendo...

 

Abs,

 

mas em um poste recente vc também me informou que o AIR não funciona em webSites: http://forum.imasters.com.br/topic/487600-como-salvar-e-exibir-um-arquivo-do-abobe-air-em-um-html/

 

Então o que posso fazer agora para conseguir as url através de um site???

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então o que posso fazer agora para conseguir as url através de um site???

 

É como eu falei no seu post, a Classe File, só está disponível no Adobe AIR. E o Adobe AIR só está disponível para projetos Desktop, Mobile ou TV.

 

Se sua intenção é web, você não irá conseguir o que quer, visto que, só a classe File pode acessar o path do sistema de arquivos.

 

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.