Ir ao conteúdo

Passar Raw em php via get/put contents ou semelhante


sagits4

Posts recomendados

Postado

Boa tarde, estou criando um sistema em que o usuario possa tirar uma foto com a webcam online, para tanto procurei diversas soluções e optei pelo plugin jpegcam: jpegcam

Pois foi o unico crossbrowser, e em que o live example realmente funcionou na parte de tirar a foto: exemplo do site .

No entanto, não estou conseguindo salvar a foto, tanto local quanto no servidor. Ele não cria o arquivo, no local chega a executar o php, mas a foto não aparece, e no servidor, ele fica no "uploading".

O plugin vem com um sistema de envio simples:

Na propria api o plugging você seta o arquivo php que trabalhará a imagem:

<script language="JavaScript">
webcam.set_api_url( 'test.php' );
webcam.set_quality( 90 ); // JPEG quality (1 - 100)
webcam.set_shutter_sound( true ); // play shutter click sound
</script>

O sistema que mostará a imagem:

<script language="JavaScript">
webcam.set_hook( 'onComplete', 'my_completion_handler' );

function take_snapshot() {
// take snapshot and upload to server
document.getElementById('upload_results').innerHTML = '<h1>Uploading...</h1>';
webcam.snap();
}

function my_completion_handler(msg) {
// extract URL out of PHP output
if (msg.match(/(http\:\/\/\S+)/)) {
var image_url = RegExp.$1;
// show JPEG image in page
document.getElementById('upload_results').innerHTML =
'<h1>Upload Successful!</h1>' +
'<h3>JPEG URL: ' + image_url + '</h3>' +
'<img src="' + image_url + '">';

// reset camera for another shot
webcam.reset();
}
else alert("PHP Error: " + msg);
}
</script>

E o código do test.php:

<?php

/* JPEGCam Test Script */
/* Receives JPEG webcam submission and saves to local file. */
/* Make sure your directory has permission to write files as your web server user! */

$filename = "aaa.jpg";
$result = file_put_contents( $filename, file_get_contents('php://input') );
if (!$result) {
print "ERROR: Failed to write data to $filename, check permissions\n";
exit();
}

$url = 'http://' . $_SERVER['HTTP_HOST'] . dirname($_SERVER['REQUEST_URI']) . '/' . $filename;
print "$url\n";

?>

Pelo que entendi ele pega o raw via file_get_contents (do php://input) e escreve no $filename via file_put_contents , e neste processo o arquivo é salvo no servidor (não entendi muito bem está parte, o file_put salva automaticamente? E então o arquivo é mostrado (indexado) na variavel $url que é colocada posteriormente num <img src> via ajax.

Bom, estou realmente perdido, alguem pode me dar uma ajuda? Obrigado

Postado

Amigo,

Eu implementei esse script em um sistema meu e está acontecendo o mesmo, ou seja, não salva em lugar nenhum do micro nem do servidor.

Você já resolveu esse problema? O meu upload salva em um campo bytea da tabela assim:


<?
session_start();
import_request_variables("gP");
include "../includes/conexao.php";
$tab = $_SESSION["tabela_atual"];
if ($tab=="U") {
$cod = $_SESSION["usuario_atual"];
} else {
$cod = $_SESSION["analise_atual"];
}
$filename = "imagem.jpg";
$result = file_put_contents( $filename, file_get_contents('php://input') );
if (!$result) {
print "ERROR: Failed to write data to $filename, check permissions\n";
exit();
}
$url = 'http://' . $_SERVER['HTTP_HOST'] . dirname($_SERVER['REQUEST_URI']) . '/' . $filename;
print "$url\n";
$bytes = file_get_contents($filename);
$bytes_escaped = pg_escape_bytea($bytes);
if ($tab=="U") {
$SqlIns = "UPDATE usuarios_pdv";
$SqlIns.= " SET imagem='$bytes_escaped',foto='S' WHERE cod_usuario='$cod'";
} else {
if ($tab=="C") {
$SqlIns = "UPDATE analise";
$SqlIns.= " SET imagem='$bytes_escaped' WHERE codigo='$cod'";
} elseif ($tab=="A") {
$SqlIns = "UPDATE analise";
$SqlIns.= " SET foto_antes='$bytes_escaped' WHERE codigo='$cod'";
} elseif ($tab=="D") {
$SqlIns = "UPDATE analise";
$SqlIns.= " SET foto_depois='$bytes_escaped' WHERE codigo='$cod'";
}
}
$result = pg_exec($conexao , $SqlIns);
// unlink($targetFile);
$bytes = file_get_contents($original);
$bytes_escaped = pg_escape_bytea($bytes);
if ($tab=="U") {
$SqlIns = "UPDATE usuarios_pdv";
$SqlIns.= " SET imagem='$bytes_escaped',foto='S' WHERE cod_usuario='$cod'";
} else {
if ($tab=="C") {
$SqlIns = "UPDATE analise";
$SqlIns.= " SET imagem='$bytes_escaped' WHERE codigo='$cod'";
} elseif ($tab=="A") {
$SqlIns = "UPDATE analise";
$SqlIns.= " SET foto_antes='$bytes_escaped' WHERE codigo='$cod'";
} elseif ($tab=="D") {
$SqlIns = "UPDATE analise";
$SqlIns.= " SET foto_depois='$bytes_escaped' WHERE codigo='$cod'";
}
}
$result = pg_exec($conexao , $SqlIns);
// unlink($targetFile);

?>

Postado

No meu caso era um problema simples, permissão de escrita não estava habilitada para o usuario web na pasta em que eu queria salvar os arquivos, mudei e pronto, estou usando exatamente o mesmo script (a parte do upload) e realmente funciona. Local acredito que não funcione mesmo.

Arquivado

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

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...