Ir para conteúdo

POWERED BY:

Arquivado

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

barogana

upload de arquivos sem input file

Recommended Posts

Aew, gente, need help.

 

Caso:

Sistema para uso privado (em extranet).

 

Tive muitos problemas, em uploads de arquivos (pdfs), desde a melhor organização para os documentos (pastas, subpastas, subpastas...), até mesmo qto próprio upload (desde a velocidade de upload, até as permissões nas pastas)... bem... enfim, o melhor mesmo é colocar essas "tralhas" num blob.

 

Iniciante sofre, por isto existem poucos monges. xD

Mas consegui, após várias horas de pesquisas (melhor dizendo: estudos, pq vão valer pra um longo tempo), adequar a rotina que "upa" os arquivos pdf, para um insert em blob, e também, com todos os testes (espero que "todos"!) de visualização e manipulação dos arquivos.

 

Graças a Deus, minha tabela teve uma boa análise, e tem a seguinte estrutura:

id (do cliente [chave de outra tabela]), documento (nr do documento), arqpdf (nome físico do arquivo), e outros campos mais.

com esta estrutura adicionei

adocumento (longblob - para o arquivo pdf),

tipoarq (varchar 40 -para a extensão mime),

tamarq (int - para o tamanho do arquivo pdf)

 

Na inserção via cadastro, está funcionando e tudo parece perfeito.

 

O problema:

Agora que a "cobra fuma".

Tenho quase 3 mil arquivos pdfs, em uma pasta, que preciso colocar nos blobs dos devidos registros.

 

Ja me exaustei, e não achei nenhum tutorial, script ou informação para obter os dados do arquivo (neste caso o nome do arquivo que está no campo "documento", e obter as informações necessárias para fazer o update (adocumento, tipoarq,tamarq)no registro, sem um form com <input type='file'....

 

A principio achei que nao seria dificil, pois tinha pensando em colocar

<input type='file' name='arquivopdf' value='NOMEDOARQUIVO A UPAR'> mas isto não funfou,pq input file não pega "value", snif.

 

 

Agradeço qualquer informação.

 

Segue o código, para os "monges" irem direto ao espírito da coisa. Thx.

 

<?php
ob_start();
header("Content-Type: text/html; charset=ISO-8859-1",true);
include("conn.php");

function mime_type( $file ) {
//http://forum.imasters.com.br/index.php?/topic/213729-detectar-o-mime-type-de-arquivos/        
//removido trocentas extensões que não me interessam
   $filetype = substr(strrchr( $file, '.' ), 1 );
$mimetypes = array("pdf" => "application/pdf");
       return implode( '', array_keys( array_flip( $mimetypes ), $filetype ));
}

$query = "select * from tabeladocumentos order by id limit 2"; // limit 2
$result = mysql_query($query) or die(mysql_error());

while ($row = mysql_fetch_array($result)){
$nomedoarquivo = $row['arqpdf'];
$pasta ="arquivos/";
$procurar = "arquivos/" . $nomedoarquivo;

$arquivo 	= fopen($procurar,'r');
$tamanho 	= filesize($procurar);
$tipo		= mime_type($procurar);	
$conteudo   = $fread($arquivo,$tamanho);
fclose($arquivo); 
/*
$fp = fopen($procurar, "rb");
$conteudo 	= $fread($fp, $tamanho);
$conteudo 	= addslashes($conteudo);	
fclose($fp);
*/
//echo $arquivo;	
echo "fp=" . $fp . "conteudo=" .$conteudo;
echo "<br>tamanho=" .$tamanho;
echo "<br>tipo=" .$tipo;

$nquery="update tabeladocumentos set=aadocumento='".$arquivo."', tipo='".$tipo."', tamanho=".$tamanho." where id='".$row['id']." and documento='".$row['documento']."'";
//$insere = mysql_query($nquery);
echo $nquery . " atualizado <br>";
}

/*
$arquivo = $_FILES["arquivopdf"]["tmp_name"]; 
$tamanho = $_FILES["arquivopdf"]["size"];
$tipo    = $_FILES["arquivopdf"]["type"];
$nome  = $_FILES["arquivopdf"]["name"];
//$titulo  = $_POST["titulo"];
$fp = fopen($arquivo, "rb");
$conteudo = fread($fp, $tamanho);
$conteudo = addslashes($conteudo);
fclose($fp); 

*/
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Matias, pls, pode fechar o tópico.

 

Se não houve alguma resposta ainda, não acredito que vá haver uma. thx

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não sei se é a melhor das soluções, mas tu pode renomear esses arquivos usando um batch para algo como:

 

arquivo00001.pdf

arquivo00002.pdf

arquivo00003.pdf

arquivo00004.pdf

 

Jogar eles numa pasta, e fazer um LOOP usando for().

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não sei se é a melhor das soluções, mas tu pode renomear esses arquivos usando um batch para algo como:

 

arquivo00001.pdf

arquivo00002.pdf

arquivo00003.pdf

arquivo00004.pdf

 

Jogar eles numa pasta, e fazer um LOOP usando for().

 

thx, boy.

mas foi extamente issoo q pensei, o problema é que não conseguí

alimentar corretamente estas variáveis

$arquivo = fopen($procurar,'r');

$tamanho = filesize($procurar);

$tipo = mime_type($procurar);

$conteudo = $fread($arquivo,$tamanho);

já que todos os tutoriais e informações se referem a dados de um <input type="file", e não de uma variável com "informações de um arquivo".

 

qto a renomear os arquivos, por lógica é desnecessário, já que tenho o nome deles

while ($row = mysql_fetch_array($result)){

$nomedoarquivo = $row['arqpdf'];

 

$nomedoarquivo <<- é o nome do arquivo que necessito colocar na coluna aadocumento como na linha abaixo

 

$nquery="update tabeladocumentos set=aadocumento='".$arquivo."', tipo='".$tipo."', tamanho=".$tamanho." where ...

 

thx yet

 

well... in abuse to your patience.

como você faría isso, if possible.

Compartilhar este post


Link para o post
Compartilhar em outros sites

this thread context dont seems upload question.

do you need use upload or use file system functions ?

 

 

man... dont make hard questions... i'm newbie in php.

 

case:

i have a folder (on host) with +- 3000 pdf files, and i need put all this files in a collumn blob.

 

a think than a "for each" files in folder to get informations to put in collumns (content, size file and mime-type) is enough.

 

sry... this post is getting too long.

I thought it would be easier, snif.

Compartilhar este post


Link para o post
Compartilhar em outros sites

its ok

 

all you need is on "PHP file system functions"

 

http://php.net/filesystem

 

 

basically, starts looking for directory list functions.

 

http://php.net/scandir

http://php.net/opendir

 

on manual you'll find scope explanation and some samples from php user contributors.

 

if you have dificult for undestand any especific functions or methods, post here in portuguese for share knowledge with other members.

 

 

 

best regards

Compartilhar este post


Link para o post
Compartilhar em outros sites

você nao entendeu o q o manual pode t ajudar?

 

Ja me exaustei, e não achei nenhum tutorial, script ou informação paraobter os dados do arquivo (neste caso o nome do arquivo que está nocampo "documento", e obter as informações necessárias para fazer oupdate (adocumento, tipoarq,tamarq)no registro, sem um form com<input type='file'....

a variavel super global $_FILES t da toda informacao do upload

 

eh so ler o manual, faça um teste super simples

 

faca um form com um input file com action para uma pagina php com este codigo

<?php
echo "<pre>";
print_r($_FILES);
echo "</pre>";

 

veja se ele retorna o q você ker exatamente....

Compartilhar este post


Link para o post
Compartilhar em outros sites

its ok

 

all you need is on "PHP file system functions"

 

http://php.net/filesystem

 

 

basically, starts looking for directory list functions.

 

http://php.net/scandir

http://php.net/opendir

 

on manual you'll find scope explanation and some samples from php user contributors.

 

if you have dificult for undestand any especific functions or methods, post here in portuguese for share knowledge with other members.

 

 

 

best regards

 

goooooooood

 

i go test it at night, I believe this is even what I need.

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.