georgewar 1 Denunciar post Postado Maio 24, 2009 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
georgewar 1 Denunciar post Postado Maio 24, 2009 você pode ver o script funcionando aqui: http://www.gwar.com.br/beta/index.php?act=...er&action=1 user: teste senha: teste * envie um arquivo entre 100mb e 400mb para melhor vizualização Compartilhar este post Link para o post Compartilhar em outros sites
Thiago de Oliveira Cruz 21 Denunciar post Postado Maio 24, 2009 É 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
georgewar 1 Denunciar post Postado Maio 25, 2009 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
Thiago de Oliveira Cruz 21 Denunciar post Postado Maio 25, 2009 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
georgewar 1 Denunciar post Postado Maio 25, 2009 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
georgewar 1 Denunciar post Postado Maio 25, 2009 leia aqui: http://kb2.adobe.com/cps/155/tn_15512.html e aqui: http://blog.hy-brid.com/flash/22/flash-fil...-to-run-slowly/ Compartilhar este post Link para o post Compartilhar em outros sites
georgewar 1 Denunciar post Postado Maio 25, 2009 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