Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Amigos,
estou utilizando o script Fancy Upload (Queued Photo Uploader). Eu limpei o código o arquivo "script.php" e fiz o teste e funcionou perfeitamente. Ao fazer o upload das fotos, ele informa que as fotos foram enviadas sem erro.
Se eu adicionar o meu código, que não interfere e nem utiliza nada do código dele em si, ele dá mensagem de erro, mas funciona assim mesmo. Só simplesmente mostra como se tivesse dando erro, mas não interfere em nada no funcionamento.
Alguém saberia dizer o que poderia ser?
Abaixo os códigos:
[build.html] - Arquivo que exibe o script para o envio
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html lang="en" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Enviar Fotos</title>
<script type="text/javascript" src="[http://ajax.googleapis.com/ajax/libs/mootools/1.2.2/mootools.js">](http://ajax.googleapis.com/ajax/libs/mootools/1.2.2/mootools.js)
<script type="text/javascript" src="source/Swiff.Uploader.js"></script>
<script type="text/javascript" src="source/Fx.ProgressBar.js"></script>
<script type="text/javascript" src="[http://github.com/mootools/mootools-more/raw/master/Source/Core/Lang.js">](http://github.com/mootools/mootools-more/raw/master/Source/Core/Lang.js)
<script type="text/javascript" src="source/FancyUpload2.js"></script>
<!-- See script.js -->
<script type="text/javascript">
//<![CDATA[
/**
* FancyUpload Showcase
*
* @license MIT License
* @author Harald Kirschner <mail [at] digitarald [dot] de>
* @copyright Authors
*/
window.addEvent('domready', function() { // wait for the content
// our uploader instance
var up = new FancyUpload2($('demo-status'), $('demo-list'), { // options object
// we console.log infos, remove that in production!!
verbose: true,
// url is read from the form, so you just have to change one place
url: $('form-demo').action,
// path to the SWF file
path: 'source/Swiff.Uploader.swf',
// remove that line to select all files, or edit it, add more items
typeFilter: {
'Images (*.jpg, *.jpeg, *.gif, *.png)': '*.jpg; *.jpeg; *.gif; *.png'
},
// this is our browse button, *target* is overlayed with the Flash movie
target: 'demo-browse',
// graceful degradation, onLoad is only called if all went well with Flash
onLoad: function() {
$('demo-status').removeClass('hide'); // we show the actual UI
$('demo-fallback').destroy(); // ... and hide the plain form
// We relay the interactions with the overlayed flash to the link
this.target.addEvents({
click: function() {
return false;
},
mouseenter: function() {
this.addClass('hover');
},
mouseleave: function() {
this.removeClass('hover');
this.blur();
},
mousedown: function() {
this.focus();
}
});
// Interactions for the 2 other buttons
$('demo-clear').addEvent('click', function() {
up.remove(); // remove all files
return false;
});
$('demo-upload').addEvent('click', function() {
up.start(); // start upload
return false;
});
},
// Edit the following lines, it is your custom event handling
/**
* Is called when files were not added, "files" is an array of invalid File classes.
*
* This example creates a list of error elements directly in the file list, which
* hide on click.
*/
onSelectFail: function(files) {
files.each(function(file) {
new Element('li', {
'class': 'validation-error',
html: file.validationErrorMessage || file.validationError,
title: MooTools.lang.get('FancyUpload', 'removeTitle'),
events: {
click: function() {
this.destroy();
}
}
}).inject(this.list, 'top');
}, this);
},
/**
* This one was directly in FancyUpload2 before, the event makes it
* easier for you, to add your own response handling (you probably want
* to send something else than JSON or different items).
*/
onFileSuccess: function(file, response) {
var json = new Hash(JSON.decode(response, true) || {});
if (json.get('status') == '1') {
file.element.addClass('file-success');
file.info.set('html', '<strong>Image was uploaded:</strong> ' + json.get('width') + ' x ' + json.get('height') + 'px, <em>' + json.get('mime') + '</em>)');
} else {
file.element.addClass('file-failed');
file.info.set('html', '<strong>An error occured:</strong> ' + (json.get('error') ? (json.get('error') + ' #' + json.get('code')) : response));
}
},
/**
* onFail is called when the Flash movie got bashed by some browser plugin
* like Adblock or Flashblock.
*/
onFail: function(error) {
switch (error) {
case 'hidden': // works after enabling the movie and clicking refresh
alert('To enable the embedded uploader, unblock it in your browser and refresh (see Adblock).');
break;
case 'blocked': // This no *full* fail, it works after the user clicks the button
alert('To enable the embedded uploader, enable the blocked Flash movie (see Flashblock).');
break;
case 'empty': // Oh oh, wrong path
alert('A required file was not found, please be patient and we fix this.');
break;
case 'flash': // no flash 9+ :(
alert('To enable the embedded uploader, install the latest Adobe Flash plugin.')
}
}
});
});
//]]>
</script>
<!-- See style.css -->
<style type="text/css">
/**
* FancyUpload Showcase
*
* @license MIT License
* @author Harald Kirschner <mail [at] digitarald [dot] de>
* @copyright Authors
*/
/ CSS vs. Adblock tabs /
.swiff-uploader-box a {
display: none !important;
}
/ .hover simulates the flash interactions /
a:hover, a.hover {
color: red;
}
#demo-status {
padding: 10px 15px;
width: 420px;
border: 1px solid #eee;
}
#demo-status .progress {
background: url(assets/progress-bar/progress.gif) no-repeat;
background-position: +50% 0;
margin-right: 0.5em;
vertical-align: middle;
}
#demo-status .progress-text {
font-size: 0.9em;
font-weight: bold;
}
#demo-list {
list-style: none;
width: 450px;
margin: 0;
}
#demo-list li.validation-error {
padding-left: 44px;
display: block;
clear: left;
line-height: 40px;
color: #8a1f11;
cursor: pointer;
border-bottom: 1px solid #fbc2c4;
background: #fbe3e4 url(assets/failed.png) no-repeat 4px 4px;
}
#demo-list li.file {
border-bottom: 1px solid #eee;
background: url(assets/file.png) no-repeat 4px 4px;
overflow: auto;
} background-image: url(assets/uploading.png);
background-color: #D9DDE9;
} background-image: url(assets/success.png);
} background-image: url(assets/failed.png);
}
#demo-list li.file .file-name {
font-size: 1.2em;
margin-left: 44px;
display: block;
clear: left;
line-height: 40px;
height: 40px;
font-weight: bold;
} font-size: 0.9em;
line-height: 18px;
float: right;
margin-top: 2px;
margin-right: 6px;
} display: block;
margin-left: 44px;
font-size: 0.9em;
line-height: 20px;
clear
} clear: right;
float: right;
line-height: 18px;
margin-right: 6px;
} </style>
</head>
<body>
<div class="container">
<h2>Enviar Fotos</h2>
<!-- See index.html -->
<div>
<form action="processar2.php" method="post" enctype="multipart/form-data" id="form-demo">
<fieldset id="demo-fallback">
<legend>File Upload</legend>
<p>
This form is just an example fallback for the unobtrusive behaviour of FancyUpload.
If this part is not changed, something must be wrong with your code.
</p>
<label for="demo-photoupload">
Upload a Photo:
<input type="file" name="Filedata" />
</label>
</fieldset>
<div id="demo-status" class="hide">
<p>
<a href="#" id="demo-browse">Adicionar Fotos</a> |
<a href="#" id="demo-clear">Limpar Lista</a> |
<a href="#" id="demo-upload">Começar o Envio!</a>
</p>
<div>
<strong class="overall-title"></strong><br />
<img src="../../assets/progress-bar/bar.gif" class="progress overall-progress" />
</div>
<div>
<strong class="current-title"></strong><br />
<img src="../../assets/progress-bar/bar.gif" class="progress current-progress" />
</div>
<div class="current-text"></div>
</div>
<ul id="demo-list"></ul>
</form> </div>
</div>
</body>
</html>
[script.php] LIMPO (Arquivo funcionando e exibindo a mensagem que o arquivo foi enviado normalmente)
<?php
set_time_limit(0); // Deixa o tempo de execução do script ilimitado
include('class.imghandler.php'); // Classe de Manipulação das fotos
include('../conexao2.php'); // Conecta ao BD
/*/ Pega os dados do evento pelo ID no BD
$id = $_POST['id'];
$query_rs_galeria = "SELECT * FROM galeria WHERE id = ".$id.";";
$rs_galeria = mysql_query($query_rs_galeria) or die("Erro ao efetuar a consulta no BD: ".mysql_error());
$row_rs_galeria = mysql_fetch_assoc($rs_galeria);
$data_inversa = $row_rs_galeria['data_inversa']; // Pasta do evento pela data invertida
$local = $row_rs_galeria['local']; // Nome da pasta do local
*/
// Dados da Imagem
$arqName = $_FILES['Filedata']['name']; // Nome do arquivo original
$arqTemp = $_FILES['Filedata']['tmp_name']; // Nome do arquivo temporário
$arqError = $_FILES['Filedata']['error']; // Informações de erro
$arqType = $_FILES['Filedata']['type']; // Tipo de Arquivo
$arqSize = $_FILES['Filedata']['size']; // Tamanho do Arquivo
$img = $arqTemp;
// Informações das pastas
$pasta = './temp/'; // Pasta temporária
$pasta_originais = "./originais/maikai_show_bar/20090826/"; // Pasta das fotos originais
$pasta_evento = "./eventos/maikai_show_bar/20090826/"; // Pasta das fotos com marca d'agua
$pasta_thumbs = "./eventos/maikai_show_bar/20090826/thumbs/"; // Pasta das miniaturas
// Validação
$error = false;
if (!isset($_FILES['Filedata']) || !is_uploaded_file($arqTemp)) {
$error = 'Envio Inválido!';
}
// Verifica se a foto é menor que 8 MB
if (!$error && $arqSize > 8 * 1024 * 1024){
$error = 'Por favor, envie somente fotos menores que 8 MB!';
}
// Verifica se é uma imagem
if (!$error && !($size = @getimagesize($arqTemp))){
$error = 'Por favor, envie somente fotos, pois nenhum outor tipo de arquivo é permitido!';
}
// Verifica o tipo de arquivo da imagem
if (!$error && !in_array($size[2], array(1, 2, 3, 7, 8))){
$error = 'Por favor, envie somente imagens do tipo: JPEG, GIF ou PNG.';
}
// Verifica o tamanho mínimo das dimensões das fotos
if (!$error && ($size[0] < 400) || ($size[1] < 400)){
$error = 'Por favor, envie uma foto maior que 400 px';
}
if ($error) {
$return = array(
'status' => '0',
'error' => $error
);
} else {
$return = array(
'status' => '1',
'name' => $arqName
);
// Pegamos o valor do HASH do arquivo
$return['hash'] = md5_file($arqTemp);
// Pegamos as informações da imagem
$info = @getimagesize($arqTemp);
if ($info) {
$return['width'] = $info[0];
$return['height'] = $info[1];
$return['mime'] = $info['mime'];
}// Output
if (isset($_REQUEST['response']) && $_REQUEST['response'] == 'xml') {
// Really dirty, use DOM and CDATA section!
echo '<response>';
foreach ($return as $key => $value) {
echo "<$key><![CDATA[$value]]></$key>";
}
echo '</response>'; echo json_encode($return);
}
?>
[script.php] INCLUSO O MEU CÓDIGO (Arquivo funcionando e exibindo a mensagem de erro)
<?php
set_time_limit(0); // Deixa o tempo de execução do script ilimitado
include('class.imghandler.php'); // Classe de Manipulação das fotos
include('../conexao2.php'); // Conecta ao BD
/*/ Pega os dados do evento pelo ID no BD
$id = $_POST['id'];
$query_rs_galeria = "SELECT * FROM galeria WHERE id = ".$id.";";
$rs_galeria = mysql_query($query_rs_galeria) or die("Erro ao efetuar a consulta no BD: ".mysql_error());
$row_rs_galeria = mysql_fetch_assoc($rs_galeria);
$data_inversa = $row_rs_galeria['data_inversa']; // Pasta do evento pela data invertida
$local = $row_rs_galeria['local']; // Nome da pasta do local
*/
// Dados da Imagem
$arqName = $_FILES['Filedata']['name']; // Nome do arquivo original
$arqTemp = $_FILES['Filedata']['tmp_name']; // Nome do arquivo temporário
$arqError = $_FILES['Filedata']['error']; // Informações de erro
$arqType = $_FILES['Filedata']['type']; // Tipo de Arquivo
$arqSize = $_FILES['Filedata']['size']; // Tamanho do Arquivo
$img = $arqTemp;
// Informações das pastas
$pasta = './temp/'; // Pasta temporária
$pasta_originais = "./originais/maikai_show_bar/20090826/"; // Pasta das fotos originais
$pasta_evento = "./eventos/maikai_show_bar/20090826/"; // Pasta das fotos com marca d'agua
$pasta_thumbs = "./eventos/maikai_show_bar/20090826/thumbs/"; // Pasta das miniaturas
// Validação
$error = false;
if (!isset($_FILES['Filedata']) || !is_uploaded_file($arqTemp)) {
$error = 'Envio Inválido!';
}
// Verifica se a foto é menor que 8 MB
if (!$error && $arqSize > 8 * 1024 * 1024){
$error = 'Por favor, envie somente fotos menores que 8 MB!';
}
// Verifica se é uma imagem
if (!$error && !($size = @getimagesize($arqTemp))){
$error = 'Por favor, envie somente fotos, pois nenhum outor tipo de arquivo é permitido!';
}
// Verifica o tipo de arquivo da imagem
if (!$error && !in_array($size[2], array(1, 2, 3, 7, 8))){
$error = 'Por favor, envie somente imagens do tipo: JPEG, GIF ou PNG.';
}
// Verifica o tamanho mínimo das dimensões das fotos
if (!$error && ($size[0] < 400) || ($size[1] < 400)){
$error = 'Por favor, envie uma foto maior que 400 px';
}
if ($error) {
$return = array(
'status' => '0',
'error' => $error
);
} else {
$return = array(
'status' => '1',
'name' => $arqName
);
// Pegamos o valor do HASH do arquivo
$return['hash'] = md5_file($arqTemp);
// Pegamos as informações da imagem
$info = @getimagesize($arqTemp);
if ($info) {
$return['width'] = $info[0];
$return['height'] = $info[1];
$return['mime'] = $info['mime'];
}
// -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
// INÍCIO DO PROCESSAMENTO DAS FOTOS
// -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
// PASSO 1 - TRATANDO O NOME DO ARQUIVO
// Extensão do arquivo
$extensao = explode('.', $arqName);
$extensao = strtolower(end($extensao));
// Pegar nome do arquivo
$nome = explode(".", $arqName);
$nome = $nome[0];
$nome = preg_replace("[^a-zA-Z0-9_]", "", strtr($nome, "áàãâéêíóôõúüçÁÀÃÂÉÊÍÓÔÕÚÜÇ ", "aaaaeeiooouucAAAAEEIOOOUUC_"));
$nome = strtolower($nome);
// Adiciona os números randômicos e monta novamente o nome do arquivo final
$arqFoto = $nome.'.'.$extensao;
// PASSO 2 - MOVENDO O ARQUIVO ORIGINAL PARA A PASTA "TEMP"
// Move o arquivo para a pasta temporária
if(move_uploaded_file($arqTemp, $pasta.$arqFoto)){
$return['src'] = substr($pasta.$arqFoto,7);
echo "Arquivo movido com sucesso!<br>";
}else{
echo "Erro ao mover!<br>";
}
// PASSO 3 - MANIPULAÇÃO DA FOTO
$ImgHandler = new ImgHandler();
$foto = $ImgHandler->ResizeImg( $pasta.$arqFoto );
$ImgHandler->insertLogo( $foto ); // Insere a logomarca
$ImgHandler->createThumb( $foto ); // Cria a miniatura
// Define o novo nome para a foto com logomarca
$marcada_antiga = substr($foto,7);
$nome = explode(".", $arqFoto);
$nome = $nome[0];
$marcada_nova = $nome."_".$marcada_antiga;
rename($pasta.$marcada_antiga, $pasta.$marcada_nova);
// Define o novo nome para a miniatura
$miniatura_antiga = substr($foto,7);
$miniatura_antiga = explode(".", $miniatura_antiga);
$extensao = strtolower(end($miniatura_antiga));
$miniatura_antiga = $miniatura_antiga[0];
$miniatura_antiga = $miniatura_antiga."_thumb.".$extensao;
$miniatura_nova = $nome."_".$miniatura_antiga;
rename($pasta.$miniatura_antiga, $pasta.$miniatura_nova);
// PASSO 4 - COPIAR AS FOTOS PARA AS DEVIDAS PASTAS E DEPOIS DELETÁ-LAS DA PASTA "TEMP"
// Original
$original = $nome.".".$extensao;
copy($pasta.$original, $pasta_originais.$original);
unlink($pasta.$original);
// Marcada
copy($pasta.$marcada_nova, $pasta_evento.$marcada_nova);
unlink($pasta.$marcada_nova);
// Miniatura
copy($pasta.$miniatura_nova, $pasta_thumbs.$miniatura_nova);
unlink($pasta.$miniatura_nova);
// -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
// FIM DO PROCESSAMENTO DAS FOTOS
// -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
} // fim do else
// Output
if (isset($_REQUEST['response']) && $_REQUEST['response'] == 'xml') {
// Really dirty, use DOM and CDATA section!
echo '<response>';
foreach ($return as $key => $value) {
echo "<$key><![CDATA[$value]]></$key>";
}
echo '</response>'; echo json_encode($return);
}
?>
Exemplo de saída quando uso o código LIMPO:
DSC03078.JPGImage was uploaded: 640 x 480px, image/jpeg)
Exemplo de saída quando uso com o meu código incluso:
DSC03078.JPGAn error occured: Arquivo movido com sucesso!
{"status":"1","name":"DSC03078.JPG","hash":"650def0ee751f7d2c69b6a2cee4ac2a7","width":640,"height":480,"mime":"image\/jpeg","src":"dsc03078.jpg"}
Carregando comentários...