Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Bom dia a todos!
Estou começando a aprender php (programo em asp e gostaria de migrar) e gostaria que me explicassem o que está ocorrendo, onde estou errando.
Tenho sistema de upload, utilizando o plugin Uploadify, que estava funcionando certinho até eu incluir um script para redimensionamento automático.
Assim funcionava:
if (!empty($_FILES)) {
$tempFile = $_FILES['Filedata']['tmp_name'];
$targetPath = $_SERVER['DOCUMENT_ROOT'] . $_REQUEST['folder'] . '/';
$targetFile = 'fotos/' . $_FILES['Filedata']['name'];
move_uploaded_file($tempFile,$targetFile);
echo "1";
}
Assim não funciona (na vdd o Upload parece ser efetuado com sucesso, mas os arquivos não sobem pra pasta)
if (!empty($_FILES)) {
$tempFile = $_FILES['Filedata']['tmp_name'];
$targetPath = $_SERVER['DOCUMENT_ROOT'] . $_GET['folder'] . '/';
$targetPath = str_replace('//','/',$targetPath);
$targetFile = 'fotos/' . $_FILES['Filedata']['name'];
move_uploaded_file($tempFile,$targetFile);
}
$imgsize = getimagesize($targetFile);
switch(strtolower(substr($targetFile, -3))){
case "jpg":
$image = imagecreatefromjpeg($targetFile);
break;
case "png":
$image = imagecreatefrompng($targetFile);
break;
case "gif":
$image = imagecreatefromgif($targetFile);
break;
default:
exit;
break;
}
$width = 700; //New width of image
$height = $imgsize[1]/$imgsize[0]*$width; //This maintains proportions
$src_w = $imgsize[0];
$src_h = $imgsize[1];
$picture = imagecreatetruecolor($width, $height);
imagealphablending($picture, false);
imagesavealpha($picture, true);
$bool = imagecopyresampled($picture, $image, 0, 0, 0, 0, $width, $height, $src_w, $src_h);
if($bool){
switch(strtolower(substr($targetFile, -3))){
case "jpg":
header("Content-Type: image/jpeg");
$bool2 = imagejpeg($picture,$targetPath.'fotos/'.$_FILES['Filedata']['name'],80);
break;
case "png":
header("Content-Type: image/png");
imagepng($picture,$targetPath.'fotos/'. $_FILES['Filedata']['name'];
break;
case "gif":
header("Content-Type: image/gif");
imagegif($picture,$targetPath.'fotos/'.$_FILES['Filedata']['name']);
break;
}
}
imagedestroy($picture);
imagedestroy($image);
echo '1'; // Important so upload will work on OSX
Eu já alterei a $targetPath = $_SERVER['DOCUMENT_ROOT'] . $_GET['folder'] . '/'; pelo caminho completo até minha pasta, assim como a $targetPath = str_replace('//','/',$targetPath); e efetuei alguns testes, mas não funciona.
As permissões estão corretas.
Desculpem-me se a questão for muito trivial.
Obrigado vinicius, mas ainda não foi isso
Ali em cima, você usa $_REQUEST['folder']
você está enviando via POST ou via GET ??
qual erro apareceu ?
tenta colocando o mesmo:
$targetPath = $_SERVER['DOCUMENT_ROOT'] . $_REQUEST['folder'] . '/';mas lembre-se de verificar se o teu plugin tá fazendo POST ou GET.
(acredito que seja POST, por isso o teu $_GET tinha valor NULL, e não ocorria o upload, logo todo o resto deveria estar falhando)Ola Amigo,
Troque:
$tempFile = $_FILES['Filedata']['tmp_name'];
$targetPath = $_SERVER['DOCUMENT_ROOT'] . $_GET['folder'] . '/';
$targetPath = str_replace('//','/',$targetPath);
$targetFile = 'fotos/' . $_FILES['Filedata']['name'];
move_uploaded_file($tempFile,$targetFile);
Por:
$tempFile = $_FILES['Filedata']['tmp_name'];
$targetPath = $_SERVER['DOCUMENT_ROOT'] . $_GET['folder'] . '/';
$targetPath = str_replace('//','/',$targetPath);
$targetFile = $targetPath . 'fotos/' . $_FILES['Filedata']['name'];
if(move_uploaded_file($tempFile,$targetFile){
echo $targetFile . " enviado com sucesso!";
} else {
echo $targetFile . " erro ao enviar!";
}
Retorne o que saiu na tela.
This is it!
Vinicius Cainelli
Willian, tentei fazer com request e também não deu certo. Na verdade não aparece erro algum. O sistema parece funcionar perfeitamente, o preloader carrega até os 100%, confirma o envio, mas qdo abro a pasta em meu servidor, vazio.
Na minha página de upload tenho:
<script type="text/javascript" src="jquery-1.3.2.min.js"></script>
<script type="text/javascript" src="swfobject.js"></script>
<script type="text/javascript" src="jquery.uploadify.v2.1.0.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$("#uploadify").uploadify({
'uploader' : 'uploadify.swf',
'script' : 'uploadify.php',
'cancelImg' : 'cancel.png',
'folder' : 'fotos',
'queueID' : 'fileQueue',
'auto' : true,
'multi' : true
});
});
</script>
onde "uploadify.php" é o código que enviei anteriormente.
Vinicius, mesmo com a alteração que propôs não há retorno de sucesso ou erro. Ao chegar nos 100%, o plugin informa "Complete" e some.
Eu ja tentei colocar o caminho completo até minha pasta (C:/Inetpub/vhosts/meusite.com.br/httpdocs/uploadify/) mas nem assim.
Toma aqui o meu upload:
<title>Upload de Imagens</title>
<center>
<style type="text/css">
<!--
body,td,th {
font-family: Verdana;
font-size: 9px;
color: #000000;
}
a:link {
color: #0099FF;
text-decoration: none;
}
a:visited {
text-decoration: none;
color: #0099FF;
}
a:hover {
text-decoration: none;
color: #0033FF;
}
a:active {
text-decoration: none;
color: #0066FF;
}
-->
</style>
<?
/CÓDIGO CRIADO POR BRYAN PARA HABBOSYSTEM/
$url = "http://SEUSITE.COM/uploads/"
?>
<body bgcolor="#FFFFFF" leftmargin="0" topmargin="0">
<strong><u>UPLOADS DE IMAGENS</u></strong>
<br>
<br>
<form action="?enviar=img" method="post" enctype="multipart/form-data">
<input name="arquivo" type="file" id="arquivo" style="border: 2px #0099FF groove;
background-color: #B3D9FF; font-family: verdana; width: 350px font-size: 9px; color: #0099FF;
font-weight: bold;">
<input name="" type="submit" style="border: 2px #0000FF groove; background-color: #0099FF;
font-family: verdana; font-size: 9px; color: #CCE6FF; font-weight: bold;" value="Enviar">
</form>
<?
if($_GET[enviar] == "img"){
$erro = $config = array();
// Busca arquivo e prepara para upload
$arquivo = isset($_FILES["arquivo"]) ? $_FILES["arquivo"] : FALSE;
{
// ler extensão de arquivo
preg_match("/\.(gif|bmp|png|jpg|jpeg|PNG|GIF|BMP|JPG|JPEG){1}$/i", $arquivo["name"], $ext);
// Renomear arquivo para evitar quebras
$file_nome = md5(uniqid(time())) . "." . $ext[1];
// upload e registro de pasta
$file_dir = "uploads/" . $file_nome;
// Upload e alocação de arquivo
move_uploaded_file($arquivo["tmp_name"], $file_dir);
// Mensagem de envio de arquivo
echo "Sua imagem foi enviada com sucesso!<br><br>
<strong>LINK DA IMAGEM:</strong> <strong> <font color=FF0000>$url$file_nome</strong> </font><br /><br />
<img src=$url$file_nome></p>";
}
}
?>
Upload produzido e distribuido por <a href="mailto:bryan@habbosystem.com">WaGnErBrYaNn.Ban.</a>
</body></center>
Olá suxz,
Tente trocar:
$targetPath = $_SERVER['DOCUMENT_ROOT'] . $_GET['folder'] . '/';
Por:
$targetPath = $_SERVER['DOCUMENT_ROOT'] . '/' . $_GET['folder'] . '/';
Espero que tenha ajudado.
This is it!
Vinicius Cainelli