Ir para conteúdo

POWERED BY:

Arquivado

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

João Mello

Como descobrir a pasta 'upload temp'

Recommended Posts

Olá pessoal?

É o seguinte, quero fazer tipo de upload com progresso, sabe?

Intão to seguindo a seguinte linha de raciocinio...

O php na hora do upload envia para uma pasta temp, para depois colocar na pasta que você quer certo? xD

Bom... eu ia ficar dando mas leituras no tamanho do arquivo pra ver se ja tinha completado...

Mas para isso preciso saber como descobrir... tipo no meu server do meu pc é simples descobrir... mas no do host? =/

 

E... sera que to no caminho certo? xD

 

Abração,

Mello

Compartilhar este post


Link para o post
Compartilhar em outros sites

execute phpinfo() e procure upload_temp_dir

 

o acesso ao diretorio dependerá das permissões de usuário.

 

 

 

se quiser pesquisar sobre o assunto procure

 

"php upload progress meter"

 

apenas preste atenção na forma como é feito o cálculo pois muitos são fakes, não exibindo o valor real de transferência.

 

 

se estiver usando a ultima versao do php aconselho a utilização da extensão "PECL uploadprogress"

http://pecl.php.net/package/uploadprogress

Compartilhar este post


Link para o post
Compartilhar em outros sites

ja tentei o phpinfo, mas ele da no value..

queria pegar a pasta por código do php mesmo... sera que tem como?

 

desde já, brigadão pela ajuda hinom ;)

 

abraço

Compartilhar este post


Link para o post
Compartilhar em outros sites

estranho..

se estiver como null o interpretador joga os arquivos no caminho configurado na variável de ambiente do sistema operacional.

 

tem outro modo pra saber isso

 

faça o upload de um arquivo qualquer, pode ser um txt vazio.

 

e mande escrever na tela o valor de tempname

 

<?php
$field = 'arquivo';
?>
<form enctype="multipart/form-data" action="<?php echo $_SERVER['SCRIPT_NAME'];?>" method="POST">
<input name="<?php echo $field;?>" type="file" />
<input type="submit" value="send" />
</form>

<?php
if( isset( $_FILES[$field] ) ){
echo 'caminho: ' . $_FILES[$field]['tmp_name'];
}
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

hum.. fiz isso :D

retornou C:\WINDOWS\Temp\phpB57.tmp

mas tipo quando faço de um arquivo grande não consigo ver la na pasta xD

aliás nem consigo ver (ja tirei td pra ver ocultos e protegidos pelo sistema)

Compartilhar este post


Link para o post
Compartilhar em outros sites

mas tipo quando faço de um arquivo grande não consigo ver la na pasta

??

 

não consegue ver o quê?

que pasta ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acho que ele quis dizer que o PHP não consegue "enchergar" o arquivo enquanto ele está sendo "uploadado" rs

Ou que ele não consegue ver pelo Explorer mesmo...

Compartilhar este post


Link para o post
Compartilhar em outros sites

isso ver pelo explorer xD

sera que tem como?

 

é pq quando você manda dar upload.. ele tem que ta indo pra algum lugar... eu só queria saber para aonde para pode ficar lendo o tamanho do aqrquivo que ta ficando la... entendes?

 

xD

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não sei como funciona, mas será que não fica "na memória" do servidor, e só é escrito no disco rígido quando o arquivo está "completo"? Tanto que tem um limite definido pro tamanho do arquivo, e quando "estoura", se não me engano dá erro de "out of allowed memory"...

 

É bem interessante isso que você está tentando fazer João, por favor nos deixe a par de todos os seus progressos :)

 

obs: Uma das soluções possíveis é usar Flash. Este uploader usa flash como um "backend" para o Javascript, e cria uma progress bar com elementos HTML, por Javascript. Usa mootools, um framework aos moldes do Prototype+Script.aculo.us

Compartilhar este post


Link para o post
Compartilhar em outros sites

João Melo, do modo como você pretende fazer tem que utilizar janelas diferentes

poruqe a janela do forumalario ficará esperando resposta final do servidor, enquanto isso utilize outra janela para buscar o tamanho do arquivo.

 

aconselho a pesquisar por "php upload progress meter" como sugeri num post acima.

Compartilhar este post


Link para o post
Compartilhar em outros sites

hinom, não entendi o que você quis dizer com "janelas"? Como assim "janelas"? Janelas do Windows Explorer? Janelas do browser? Ou "janelas" é um termo para a requisição HTTP?

Compartilhar este post


Link para o post
Compartilhar em outros sites

hinom, não entendi o que você quis dizer com "janelas"? Como assim "janelas"? Janelas do Windows Explorer? Janelas do browser? Ou "janelas" é um termo para a requisição HTTP?

janela... é a janela do browser..

um frame ou iframe é uma janela.

 

Há uns 5 ou 6 anos atrás precisei fazer isso que o João Melo quer fazer.

Na época fiz como ele está planejando. A solução que encontrei foi enviar o formulário para um frame escondido. Então a janela principal onde o usuário navega fica livre podendo fazer qualquer outra coisa. Então fiz o seguinte

 

- o usuario escolhia o arquivo pra upload

- ao clicar em enviar um layer aparecia na frente da tela, em cima do formulario com uma barra de progresso.

- o formulario estava com target apontando para um frame escondido.

- com a janela principal livre, logo após enviar o formulário e abrir o layer com a barra de progresso, uma rotina em javascript enviava pings para um script PHP que retornavao tamanho do arquivo que estava sendo enviado.

- para obter o tamanho do arquivo tinha que usar ActiveX, e para isso o usuario tinha que permitir a execução.

 

exemplo ActiveX

var obj = new ActiveXObject("Scripting.FileSystemObject");
fmrV	= document.a.b.value;
objE	 = obj.getFile(d);
alert( objE.size );

 

atualmente, se você pesquisar por aí encontrará centenas de scripts prontos sem precisar fazer essa gambiarra toda.

Compartilhar este post


Link para o post
Compartilhar em outros sites

sim sim eu iria usar um iFrame...

o que este ActiveXObject faz?

ele pegao tamanho total? ou que ta indo pro servidor?

 

é que o meu problema é que não encontro pra aonde ta indo... tipo.. tenho o firebug, ele mostra que alguma coisa ta sendo enviado, eu queria fazer o que ele faz xD

 

e dos exemplo que vi na net, eles usar pacotes para o php, queria arranjar um método simples e sem 'dependências'...

 

abraço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

É, pra fazer com barra de progresso você teria que saber o tamanho total do arquivo, mas com o php não tem como fazer isso.... a não ser que você use alguma extenção...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pergunte para o administrador da sua hospedagem, tenho certeza que ele sabe.

 

att:

Tullius

Compartilhar este post


Link para o post
Compartilhar em outros sites

o que este ActiveXObject faz?

???

 

obtpem o tamanho do arquivo em bytes, no lado cliente

alert( objE.size );

script que mostrei é um exemplo, um escopo.

 

o conselho que posso sugerir é que não tente fazer muitas gambiarras porque será trabalho em vão.

evite ao máximo scripts em desuso e quanto menos dependências melhor, tanto no lado servidor quanto no lado cliente.

 

 

essa mesma solução que desenvolvi uns anos atrás não funcionava num servidor ou outro. o que acontecia é que as políticas de segurança ou o formato do sistema de arquivos do servidor não permitia acesso às propriedades de um arquvio em uso, no caso o arquivo que estava sendo "uploadeado". Para conseguir o acesso precisava de um componente extra que dependia da versão do servidor etc.

 

existe outra solução melhor mas que exige instalação de plugin no cliente. Teve uma época que utilizei um java applet, nao lembro mais o nome. Ele obtinha o tamanho do arquivo no lado cliente e verificava a conexão do cliente a quantidade de bytes enviados. Acho que se você procurar por plugins será mais viável e seguro. O usuário que quiser ter esse recurso, que faça a permissão de execução do plugin, senão.. ficará sem ver a barra de progresso.

Compartilhar este post


Link para o post
Compartilhar em outros sites

hum... o firebug consegue saber quanto ta sendo enviado... tem como saber quanto ta sendo enviado por javascript?

 

abraço. e brigadão desde já!

daí você cairá na mesma questão que o o amigo rev087 citou:

 

Sem contar que ActiveX só funciona no IE, não?

pois somente quem possui o firebug instalado conseguiria executar. somente desenvolvedores que gostam do firefox instalam o firebug e o pior é que muitos nem sabem de sua existência.

 

evite ao máximo criar rotinas inseguras. Tente criar algo que seja o mais "duradouro" e consistente possível.

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.