Ir para conteúdo

POWERED BY:

Arquivado

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

Weikm@n

Upload de Arquivos maiores que 20Mb

Recommended Posts

Olá galera no imasters, depois de mtas horas procurando, finalmente encontrei um upload de arquivos zip q funcione e q descompacta os arquivos em uma pasta, pois bem, o codigo abaixo faz o upload legal e descompacta, o problema eh q se eu tentar subir um arquivo zip cm 150 fotos compactadas, q eh a media por galeria, o arquivo zip fica cm uns 12Mb, sendo q pode ter eventos q precise de mais, entao botei logo 20Mb no titulo, certo, mas como 12Mb demora um pouco pra carregar, entao axo q espira a pagina ou sei lah, sei q ele vai carregando e carregando, depois de um tmp ela tipo cansa e para, fiz uns testes e consegui subir ate 8mb, pensei em por tipo aqueles loading, q vai dizendo o tanto q jah transferiu, mas nao axei ainda um q funcione, alguma ideia pra me ajudar? brgd!

<?php
set_time_limit(0);

function openZip($file_to_open) {
global $target;
global $unique_folder;
$zip = new ZipArchive();
$x = $zip->open($file_to_open);

	if ($x === true) {
	$zip->extractTo($target . $unique_folder);
	$zip->close();

	unlink($file_to_open);
	}
	else { die("Ocorreu um problema. Favor tente novamente!");	}

}


if(isset($_FILES['fupload'])) {
$filename = $_FILES['fupload']['name'];
$source = $_FILES['fupload']['tmp_name'];
$type = $_FILES['fupload']['type'];

$name = explode('.', $filename); # $name[0] returns the name of the file. $name[1] returns the extension (zip)
$target = 'imgs/coberturas/' . $name[0] . '/';  # Where the file will be saved. I.E. 'extracted/myFile-02151985/'

// Ensures that the correct file type was chosen.
$accepted_types = array('application/zip', 'application/x-zip-compressed', 'multipart/x-zip', 'application/x-compressed');

foreach($accepted_types as $mime_type) {
if($mime_type == $type) {
$okay = true;
break;
} 
}

// Safari/Chrome don't register zip mime types. Something better could be used here - with the use of the PEAR extension.
$okay = strtolower($name[1]) == 'zip' ? true : false;

if(!$okay) { die("Favor, selecione um arquivo zip!"); }

#$unique_folder = $name[0] . '-' . time() . '/';
mkdir($target);
$saved_file_location = $target . $filename;

if(move_uploaded_file($source, $target . $filename)) {
openZip($saved_file_location);
}
else { die("Ocorreu um erro");}
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Inserir Cobertura</title>
</head>

<body>
<form enctype="multipart/form-data" action="" method="post">
<table width="500" border="0" cellpadding="0" cellspacing="2">
<tr>
	<td width="100">Titulo:</td>
	<td width="394"><input name="titulo" type="text" id="titulo" size="60" /></td>
</tr>
<tr>
  <td>Data:</td>
  <td> </td>
   </tr>
<tr>
	<td>Cobertura:</td>
	<td><input type="file" name="fupload" /></td>
</tr>
   <tr>
	<td></td>
	<td><input type="submit" value="Enviar Cobertura" /></td>
</tr>
</table>
</form>
</body>
</html>

 

andei lendo e vi q tinha tipo um tmp pra expirar, e axei esse cod, mas mesmo assim nao ajudou.

<?php
set_time_limit(0);
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nem olhei o código, muito grande :D

Mas vê se isso ajuda:

ini_set("max_execution_time","0");

hehe, nada feito, continua carregando e depois de um tmp, para, e nao carrega nada, alguma dica a mais? mas brigado pela ajuda!!! :D :joia:

Compartilhar este post


Link para o post
Compartilhar em outros sites

resolveria tbm se desse pra selecionar os arquivos, ai eles apareceriam tipo em um lista, e ia upando conforme as imagens mostrando o jah transferiu e o q tah trasnferindo, obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

alguma ajuda mais? tava precisando de um codigo q faça upload de arquivos com mais ou menos 20mb, q sao arquivos zips cm fotos dentro, obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Onde está hospedado seu site? as vezes pode ser que a hospedagem não suporta um upload tão grande de uma só vez..

outro motivo pode ser o tempo de conexão do PHP que se não me engano é de 2 min.. depois disso ele aborta a operação.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Onde está hospedado seu site? as vezes pode ser que a hospedagem não suporta um upload tão grande de uma só vez..

outro motivo pode ser o tempo de conexão do PHP que se não me engano é de 2 min.. depois disso ele aborta a operação.

esta hospedado no http://serversp.com.br/

Compartilhar este post


Link para o post
Compartilhar em outros sites

Muitos servidores restringem as configurações para o PHP funcionar legal no Windows. Aconteceu semana passada comigo na Locaweb. Só enviava arquivo de 4MB. Pedi autorização ao cliente para mudar para o Pinguim e resolveu.

 

Mais: atente às diretivas do php.ini

 

max_input_time

post_max_size

upload_max_filesize

memory_limit

 

Se sua hospedagem for Linux, o arquivo php.ini pode estar na raiz do diretório.

 

Se não estiver você pode tentar também usar essas diretivas com ini_set do PHP, como informou Weikm@n.

Se, mesmo assim, não funcionar, entre em contato com o host e peça para alterar as configurações do php.ini de forma de permita enviar um arquivo de x MB.

 

Sobre a barra de progresso, atualmente estou usando esta: http://www.uploadify.com/demos/

Veja se te atende.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se você não tiver acesso ao php.ini do seu servidor, configura um .htaccess

 

max_input_time

post_max_size

upload_max_filesize

memory_limit

Compartilhar este post


Link para o post
Compartilhar em outros sites

Muitos servidores restringem as configurações para o PHP funcionar legal no Windows. Aconteceu semana passada comigo na Locaweb. Só enviava arquivo de 4MB. Pedi autorização ao cliente para mudar para o Pinguim e resolveu.

 

Mais: atente às diretivas do php.ini

 

max_input_time

post_max_size

upload_max_filesize

memory_limit

 

Se sua hospedagem for Linux, o arquivo php.ini pode estar na raiz do diretório.

 

Se não estiver você pode tentar também usar essas diretivas com ini_set do PHP, como informou Weikm@n.

Se, mesmo assim, não funcionar, entre em contato com o host e peça para alterar as configurações do php.ini de forma de permita enviar um arquivo de x MB.

 

Sobre a barra de progresso, atualmente estou usando esta: http://www.uploadify.com/demos/

Veja se te atende.

 

Vlw entao, vw dah uma olhada..

 

Se você não tiver acesso ao php.ini do seu servidor, configura um .htaccess

 

max_input_time

post_max_size

upload_max_filesize

memory_limit

 

aham, pode informa como deixo no .htaccess?

 

assim?

 

post_max_size = 2000;

 

posta um exemplo favor, obrigado

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.