Scientist 2 Denunciar post Postado Março 1, 2012 Boa Tarde, como calculo o tempo de upload de um arquivo. O arquivo vai demorar 5 minutos ? 6 minutos para ser enviado ao servidor ? obs: uso o método move_uploaded_file() Compartilhar este post Link para o post Compartilhar em outros sites
ESerra 744 Denunciar post Postado Março 1, 2012 Com PHP não rola, talvez com JS. Compartilhar este post Link para o post Compartilhar em outros sites
Scientist 2 Denunciar post Postado Março 1, 2012 pois é.. eu já fiz todo script em jquery para carregar barra de progresso passando apenas o tempo inicial e o tempo final, porém preciso pegar essa informação do upload. Alguma ideia ? obs: não posso usar APC do PHP 5 porque tem que instalar no servidor e como o meu servidor é da locaweb e compartilhado, eles não instalam. Compartilhar este post Link para o post Compartilhar em outros sites
hufersil 145 Denunciar post Postado Março 1, 2012 Bom, com JS eu não conheço. Você poderia tentar fazer uma interface em flex/flash. Abaixo um MXML (Flex) bem simples para poder enviar arquivos. <?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" initialize="initializeHandler(event)" > <mx:Script> <![CDATA[ import mx.events.FlexEvent; import mx.collections.ArrayCollection; [bindable] // armazena os arquivos selecionados private var arrFiles:ArrayCollection = new ArrayCollection(); // objeto para selecionar os arquivos private var files:FileReferenceList = new FileReferenceList(); // tempo em que iniciou o upload private var startTime:Number; // endereço para onde os arquivos devem ser enviados private var uploadTargetURL:String = 'http://example.com'; /** * Processa a fila de arquivos. * * Envia o primeiro o item da fila * * */ private function proccessQueue():void { if(arrFiles.length > 0){ var item:FileReference = arrFiles.getItemAt(0) as FileReference; item.upload(new URLRequest(uploadTargetURL), 'arquivo'); pBar.source = null; pBar.minimum = 0; pBar.maximum = 1; pBar.setProgress(0,1); } } /** * Chamado ao inicializar o componente/aplicação * * * */ private function initializeHandler(event:FlexEvent):void { grid.dataProvider = arrFiles; files.addEventListener(Event.SELECT, files_selectHandler); } /** * Chamado ao clicar no botao de enviar arquivos * * */ private function btnEnviar_clickHandler(event:MouseEvent):void { proccessQueue(); } /** * chamado ao clicar no botão de selecionar arquivos * * */ private function btnSelecionar_clickHandler(event:MouseEvent):void { files.browse(); } /** * Chamado ao selecionar os arquivos na janela de seleção de arquivos * * */ private function files_selectHandler(event:Event):void { arrFiles.source = FileReferenceList(event.target).fileList; arrFiles.refresh(); for each(var file:FileReference in arrFiles){ file.addEventListener(ProgressEvent.PROGRESS, file_progressHandler); file.addEventListener(DataEvent.UPLOAD_COMPLETE_DATA, file_dataCompleteHandler); file.addEventListener(Event.OPEN, file_openHandler); } } /** * Chamado ao enviar uma parte do arquivo * * */ private function file_progressHandler(event:ProgressEvent):void { var elapsed:Number = (new Date().getTime()) - startTime; var currentSendRate:Number = event.bytesLoaded / elapsed; var timeLeft:Number = (event.bytesTotal - event.bytesLoaded) / currentSendRate; var seconds:Number = Math.round((timeLeft / 1000) % 60); var minutes:Number = Math.floor((timeLeft / 1000) / 60); lblProgresso.text = 'Tempo restante: ' + (minutes < 10 ? '0' + minutes : minutes) + ':' + (seconds < 10 ? '0' + seconds : seconds); } /** * Chamado ao receber os dados de confirmação de upload. * * O script tem que enviar alguma saida para este metodo ser chamado. * * */ private function file_dataCompleteHandler(event:DataEvent):void { lblProgresso.text = 'Finalizado'; arrFiles.removeItemAt(arrFiles.getItemIndex(event.target)); proccessQueue(); } /** * Chamado ao iniciar o upload * * */ private function file_openHandler(event:Event):void { startTime = new Date().getTime(); lblProgresso.text = 'Iniciando...'; pBar.source = event.target; } ]]> </mx:Script> <mx:VBox x="0" y="0" width="100%" height="100%"> <mx:DataGrid width="100%" height="100%" id="grid"> <mx:columns> <mx:DataGridColumn headerText="Nome do arquivo" dataField="name" width="300"/> <mx:DataGridColumn headerText="Tamanho" dataField="size"/> <mx:DataGridColumn headerText="Data de Modificação" dataField="modificationDate"/> </mx:columns> </mx:DataGrid> <mx:HBox width="100%" horizontalAlign="right"> <mx:HBox width="100%"> <mx:Label text="Label" id="lblProgresso"/> <mx:Spacer width="100%" height="100%" /> <mx:ProgressBar width="200" id="pBar" /> </mx:HBox> <mx:Button label="Selecionar Arquivos" id="btnSelecionar" click="btnSelecionar_clickHandler(event)"/> <mx:Button label="Enviar para o Servidor" id="btnEnviar" click="btnEnviar_clickHandler(event)"/> </mx:HBox> </mx:VBox> </mx:Application> @braços e fique com Deus! Compartilhar este post Link para o post Compartilhar em outros sites
Scientist 2 Denunciar post Postado Março 1, 2012 Sou zerado em FLEX, não teria algo em JQUERY, Javascript ou PHP ?:D Compartilhar este post Link para o post Compartilhar em outros sites
hufersil 145 Denunciar post Postado Março 1, 2012 É que neste caso você vai precisar de uma linguagem client-side. Você poderia tentar usar, então, JQuery com uploadfy É javascript, mas que "por debaixo dos panos" usa flash. @braços Compartilhar este post Link para o post Compartilhar em outros sites