file_put_contents ajuda

Pessoal tenho um sistema de despesas, do qual toda despesa tem um anexo do comprovante que esta sendo gravado no banco de dados eu acho, pois toda vez que preciso visualizar o anexo na consulta o navegador faz download e eu queria mesmo era abrir em modal, me informaram que eu teria que transformar o arquivo em disco porem eu nao faço ideia de como fazer isso, alguem ja usou essa função file_put_contents?

OBS: meu campo {anexo} esta como “Documento(banco de dados)”, existem também um campo {nomedoanexo} que consultando no banco de dados muda o nome dos meus arquivos que fiz upload por exemplo ficam assim : sc_b5cb330b_cursosenac.pdf.

Junior, você está reportando o mesmo problema em vários tópicos?

olá haroldo,

não pois esse eu gostaria de uma ajuda de como usar esta função nao consegui achar nada detalhado na web, o outro era mais voltado ao problema que voce me deu essa dica, caso estiver fora das regras algo do tipo eu tento apagar este topico

Eu entendo como o mesmo problema.

O uso do file_put_contents é simples.

sc_lookup(ds, “select arquivo from tabela where id=xxx”);
if (!empty($ds)):
file_put_contents("…/_lib/tmp/arquivo.pdf", $ds[0][0]);
sc_redir(“https://dominio/sistema/_lib/tmp/arquivo.pdf","",“modal”,"",“400”,"220”);
endif;

** Agora precisa ver como o arquivo foi gravado no banco de dados.

Haroldo,

o arquivo é gravado no banco de dados como tipo “OID”, utilizo dois campos para gravar os arquivos um é o {anexo} o outro é {nomedoanexo}

segue aqui abaixo um print da minha tabela de despesas com foco nos campos de anexo,

https://ibb.co/hVxCx8

no meu caso coloquei o codigo la

sc_lookup(ds, “select anexo from despesas where iddespesas = ‘{iddespesas}’”);
//$arquivo = file_put_contents("/opt/NetMake/v9/wwwroot/scriptcase/file/doc", $ds[0][0]);

if (!empty($ds)):
file_put_contents("/opt/NetMake/v9/wwwroot/scriptcase/file/doc", $ds[0][0]);
sc_redir("/opt/NetMake/v9/wwwroot/scriptcase/file/doc","",“modal”,"",“600”,“480”);
endif;

*POREM COLOCANDO OU NAO NO FINAL O NOMEARQUIVO.PDF ele nao abre fala que ta NOT FOUND

o parâmetro do comando solicita o nome do arquivo.

como foi informado no exemplo.

Haroldo nesse caso eu tenho um campo {nomedoanexo}, porem esse caminho eu nao to entendo, nao sei como ver pra onde vai os meus arquivos, pra mim eu só sei que esta gravando dentro da tabela, agora eu nao entendi se esse caminho é pra eu gerar ele em disco ou se ele ja existe como faço para descobrir ?

esse caminho será usado tanto para produção como para desenvolvimento.

no caso do desenvolvimento:

/opt/NetMake/v9/wwwroot/scriptcase/app/NOMEDOSEUPROJETO/_lib/tmp

veja se a pasta tmp está criada nesse caminho. Talvez seja isso.

Haroldo bom dia,

eu nao consegui resolver esse b.o, pensei em uma outra forma, que seria na hora de fazer um cadastro quando seleciona o anexo em pdf colocar um codigo que ele vá tanto para o banco de dados como para o diretório que eu definir, é possivel eu utilizar o campo {anexo} e ele vai também gravar o pdf em uma pasta que eu definir?

Na verdade pelos estudos que fiz não é uma boa pratica guardar documentos no banco de dados.

Qual o banco que você utiliza?

Eu utilizo postgress, poderia me dizer o porque ?

Porque o que?

Não usar arquivos em banco de dados? De uma googlada.

Não faz diferença vc fazer upload em disco e jogar par ao banco só para manter o arquivo. Se não consegue gravar o arquivo em disco.

http://www.scriptcase.com.br/forum/index.php/topic,13191.msg68731.html#msg68731

interessante, gostei do link, aquela forma que voce mandou pra ela funciona também com arquivo pdf no caso? eu utilizando aqueles codigos no formulario que gravo os dados e faz o upload do arquivo para o banco também consigo gravar ele em disco no diretório que eu definir, correto?

Sim funciona.

Precisa aprender sobre cabeçalhos de páginas Html.