Ir para conteúdo

POWERED BY:

Arquivado

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

georgewar

[Resolvido] erro durante a execução do swf

Recommended Posts

Imagem Postada

 

durante o envio do upload, ele aparece esta mensagem diversas vezes, durante um determinado intervalo de tempo.

Se eu clicar em não, continuo o upload normalmente...

 

alguem sabe como posso fazer para isto não acontecer?

Compartilhar este post


Link para o post
Compartilhar em outros sites

É provavelmente que um loop deve ta ficando infinito nesse script causando assim esse erro...

 

100% de chance de ser isso.

 

Procure por um for... ou while infinito...

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

a unica coisa que pode estar infinita é o objUpload.onProgress

do contrário não tem outro looping com este problema, dê uma olhada no código:

 

//importando as classes necessárias.
import flash.net.FileReference;
import flash.events.*;
import flash.external.*;

//definindo variáveis
var dataID:Date = new Date();
var uniqueID:String = substring(Math.random(), 0, 10);
var maxfilesizebytes:Number = _root.maxfilesizebytes;
var extensoes:String = _root.extensoes;
var urlpost:String = "../../funcoes/func_upload.php?uniqueID="+uniqueID; //a partir do arquivo swf
var corfonte:Number = parseInt("0x"+_root.corfonte.split("#").join(""), 16);
var corfonteprogress:Number = parseInt("0x"+_root.corfonteprogress.split("#").join(""), 16);
var corborda:Number = parseInt("0x"+_root.corborda.split("#").join(""), 16);
var corfundotexto:Number = parseInt("0x"+_root.corfundotexto.split("#").join(""), 16);
var corprogresso:Number = parseInt("0x"+_root.corprogresso.split("#").join(""), 16);
var functioncall:String = _root.functioncall;
var propriedades:Array = new Array();
var data1:Date;
var data2:Date;
data2 = new Date();
var bytesanterior:Number = 0;
var filesize:Number;
var btBrowse:MovieClip;
var tFile:TextField;
var mcProgressBar:MovieClip;
var bordaProgress:MovieClip;
var bordabotao:MovieClip;
var fundobotao:MovieClip;
var textobotao:MovieClip;

//instancia o objeto listener
var objUpload:Object = new Object();

//define as extensões permitidas
	var arquivosPermitidos:Array = new Array();
	
	//separa os tipos de extensoes
	var arrExtensoes:Array = extensoes.split("|");
	for(i=0; i<arrExtensoes.length; i++){
		
		//separa a legenda da extensão
		var arrExtensoes2:Array = arrExtensoes[i].split("/");
		arquivosPermitidos[i] = {description:arrExtensoes2[0], extension:arrExtensoes2[1]};
	}

//define a cor da borda da caixa de texto
tFile.borderColor = corborda;
tFile.textColor = corfonte;
tPorcentagem.textColor = corfonteprogress;

//muda a cor da borda da barra de progresso
myColor1 = new Color(bordaProgress);
myColor1.setRGB(corborda);

//muda a cor da barra de progresso
myColor2 = new Color(mcProgressBar);
myColor2.setRGB(corprogresso);

//muda a cor da borda do botao
myColor3 = new Color(btBrowse.bordabotao);
myColor3.setRGB(corborda);

//muda a cor de fundo do botao
myColor4 = new Color(btBrowse.fundobotao);
myColor4.setRGB(corfundotexto);

//muda a cor do texto do botao
myColor5 = new Color(btBrowse.textobotao);
myColor5.setRGB(corfonte);

//muda a cor do fundo do tFile
tFile.backgroundColor = corfundotexto;

//criando a instancia da classe FileReference, a classe responsável pelo Upload...
var	frUpload:FileReference = new FileReference();

//função principal
function initUpload(Void):Void
{

	//não mostra a borda da barra de progresso
	bordaProgress._visible = false;
	
	//tamanho inicial da barra de progresso
	mcProgressBar._width = 0;
	
	//ação de escolha de um arquivo na caixa de browse...
	objUpload.onSelect = function(f:FileReference):Void
	{
		
		//coloca os dados do arquivo em um array
		for(var propriedade in f)
			propriedades.push(propriedade+"="+f[propriedade]);
		
		//seta campo texto com o nome do arquivo selecionado
		tFile.text = f.name;
		
		//seta o tamanho do arquivo na variavel global
		filesize = f.size;
		
		//chega o limite de upload
		if(filesize >= maxfilesizebytes){
			getURL("java script:alert('O arquivo selecionado tem tamanho maior que o permitido! ("+convertSize(filesize)+" > "+convertSize(maxfilesizebytes)+")');");
		}
		else{
			//mostra mensagem de enviando arquivo
			tPorcentagem.text = "Enviando arquivo...";
			
			//mostra borda da barra de progresso
			bordaProgress._visible = true;
			
			//método para enviar o arquivo em multipart ao servidor...
			frUpload.upload(urlpost, "userfile");
		}
	}
	
	//durante o progresso do envio
	objUpload.onProgress = function(file:FileReference, bytesLoaded:Number, bytesTotal:Number):Void
	{
		//cria a data atual
		data1 = new Date();
		
		//obtém os segundos e mili da data 1
		seconds1 = data1.getSeconds();
		mili1 = data1.getMilliseconds();
		
		//obtém os segundos e mili da data 2
		seconds2 = data2.getSeconds();
		mili2 = data2.getMilliseconds();
		
		//diferença de tempo entre os dois tempos de chamada
		seconds = Math.abs((seconds2+mili2/1000)-(seconds1+mili1/1000));
		
		//porcentagem de envio
		percent = convertpontovirgula(casasdecimais(bytesLoaded*100/bytesTotal, 2));
		
		//coloca porcentagem no texto da barra de progresso
		tPorcentagem.text = percent +'% - '+ convertSize(bytesLoaded) + " de " + convertSize(bytesTotal)+" - "+convertSize((bytesLoaded-bytesanterior)/seconds)+"/s";
		
		//aumenta a barra de progresso
		mcProgressBar._width = Math.ceil(325*(bytesLoaded/bytesTotal));
		
		//seta os bytes carregados anteriormente
		bytesanterior = bytesLoaded;
		
		//seta a data para ser resgatada na proxima execução
		data2 = new Date();
	}

	//quando o arquivo for enviado totalmente ao servidor e estar Completo, retornará neste Método...
	objUpload.onComplete = function(f:FileReference):Void {
		
		//inclui este texto na barra de progresso
		tPorcentagem.text = "Arquivo enviado com sucesso! "+convertSize(filesize);
		
		//chama o ajax na pagina responsável pela continuação do processo
		ExternalInterface.call(functioncall, uniqueID, propriedades.toString());
	}
	
	//caso aprensente algum erro no envio...
	objUpload.onHTTPError = objUpload.onIOError = function() {
		
		//mostra mensagem de erro
		tPorcentagem.text = "Erro ao enviar arquivo!";
	}
	
	//adicionando as ações de listener ao objeto de Upload...
	frUpload.addListener(objUpload);
	
	//ao clicar no botão abrir a caixa de seleção
	btBrowse.onRelease = function(Void):Void
	{
		//método para abrir a caixa de seleção na classe FileReference...
		frUpload.browse(arquivosPermitidos);
	}
}

//separa as casas decimais
function casasdecimais(numerotratado, casas) {
	numerotratado = Math.round(numerotratado * Math.pow(10, casas)) / Math.pow(10, casas);
	numerodeajuste = numerotratado.toString();
	var ajustedecimais:Array = numerodeajuste.split(".");
	if (ajustedecimais[1] == null  and casas > 0) {
	   ajustedecimais[1] = "0";
	} else if (casas <= 0){
	   return(ajustedecimais[0]);
	   break;
	}
	saida = ajustedecimais[1];
	while(length(saida) < casas) {
	saida = saida + "0";
	}
	saida = ajustedecimais[0] + "." + saida;
	return(saida);
}

//converte o ponto em virgula
function convertpontovirgula(variavalpconverter) {
	variavalpconverter.toString();
	var ajustevirg:Array = variavalpconverter.split(".");   
	if (ajustevirg.length == 2) {
	variavalpconverter = ajustevirg[0] + "," + ajustevirg[1];
	}
	return variavalpconverter;
}

//formata na unidade correta
function convertSize(numberBytes:Number):String{
	if(numberBytes < 1024) return numberBytes+" Bytes";
	if(numberBytes >= 1024 && numberBytes < 1048576) return convertpontovirgula(casasdecimais(numberBytes/1024, 2))+" Kb";
	if(numberBytes >= 1048576 && numberBytes < 1073741824) return convertpontovirgula(casasdecimais(numberBytes/1024/1024, 2))+" Mb";
	if(numberBytes >= 1073741824 && numberBytes < 1099511627776) return convertpontovirgula(casasdecimais(numberBytes/1024/1024/1024, 2))+" Gb";
}  

//iniciando nosso projeto...
initUpload();

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fiiiiii que conta mais doida é essa aqui????????

 

percent = convertpontovirgula(casasdecimais(bytesLoaded*100/bytesTotal, 2)); ????????

 

Isso ai ta funcionando corretamente???? pelas minhas contas ta não

 

Porcentagem se faz assim:

 

percent = Math.round(bytesLoaded/bytesTotal)*100);

 

Desculpe-me se estiver enganado... mas pra que tanta conta maluca se isso ai é tão mais simples?

 

Assim você não tem que converter tamanho algum nem nada...

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

hehehe

tá funcionando corretamente....

Pode testar no link que postei acima!

 

essa variável é so pra exibição, o que mexe na barra de upload é essa:

 

mcProgressBar._width = Math.ceil(325*(bytesLoaded/bytesTotal));

aqui:

percent = convertpontovirgula(casasdecimais(bytesLoaded*100/bytesTotal, 2));
"bytesLoaded*100/bytesTotal" é a mesma coisa de "bytesLoaded/bytesTotal)*100"

 

as funcoes "casasdecimais" e "convertpontovirgula" fazem o que o proprio nome diz! Retorno a dizer, esta parte do código é so para exibição!!!

 

 

 

 

no mais ainda não consegui resolver meu problema, e creio que a conta em cima não tem nada a ver com o mesmo. Alguém pode me ajudar?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vou postar a solução para o problema se alguem precisar:

 

trata-se de um bug pro flash quando se envia um arquivo grande, então temos que dar um trabalho pro flash pensar que não tá parado, demorando pra responder ou loop infinito.

 

junto com a chamada do method upload da classe filereference chame a função startSomeNonsense() (abaixo) como no exemplo abaixo:

 

.
.
.
frUpload.upload(urlpost, "userfile");

//chama função para dar um trabalho extra ao flash não emitir um erro 
//dizendo que o script está deixando o computador lento
startSomeNonsense();

a função:

function startSomeNonsense(){
   var count:Number = 0;
   this.onEnterFrame = function(){
	  count += 1;
   }
}

* enviei um arquivo de 360 mb sem problemas. FLws!

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.