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 pessoal.
Estou usando o SWFUpload para fazer upload de arquivos em meu site.
meu problema é o seguinte:
tenho um formulário com os seguintes atributos (nome, empresa, email, telefone, arquivo para envio, descrição do arquivo).
eu queria saber como passar por parametro esses atributos para serem usados na classe que envia o arquivo.
por exemplo: eu preencho os campos, seleciono o arquivo e clico em enviar, a classe que faz upload pega o valor dos campos e me envia um email com o valor desses campos.
eu só consigo pegar os dados do arquivo, os valores dos campos não consigo pegar.
alguém tem idéia de como resolver este problema?
abaixo segue o script de configuração do SWFUpload:
<script type="text/javascript">
var swfu;
window.onload = function () {
swfu = new SWFUpload({
// Backend settings
upload_url: "upload.php",
flash_url : "swfupload/swfupload.swf",
file_post_name: "filedata",
// Flash file settings
file_size_limit : "100 MB",
file_types : "*.zip;*.rar;*.pdf;*.doc;*.docx;*.xls;*.xlsx;*.avi;*.wmv;*.mov;*.jpg;*.png;*.psd;*.swf;*.fla", // or you could use something like: "*.doc;*.wpd;*.pdf",
file_types_description : "All Files",
file_upload_limit : "0",
file_queue_limit : "1",
// Event handler settings
swfupload_loaded_handler : swfUploadLoaded,
file_dialog_start_handler: fileDialogStart,
file_queued_handler : fileQueued,
file_queue_error_handler : fileQueueError,
file_dialog_complete_handler : fileDialogComplete,
//upload_start_handler : uploadStart, // I could do some client/JavaScript validation here, but I don't need to.
upload_progress_handler : uploadProgress,
upload_error_handler : uploadError,
upload_success_handler : uploadSuccess,
upload_complete_handler : uploadComplete,
// Button Settings
button_image_url : "conteudo/teste.png",
button_placeholder_id : "spanButtonPlaceholder",
button_width: 61,
button_height: 22,
custom_settings : {
progress_target : "fsUploadProgress",
upload_successful : false
},
// Debug settings
debug: false
});
};
</script>
Agradeço desde já.já tentei mas aí não consigo pegar o nome do arquivo...
quando pego via $_POST da certo de pegar os dados do formulário mas não da certo de pegar o nome do arquivo...
o nome do arquivo estou pegando desta forma: $_FILES['filedata']['name']
e o os dados do formulário estou pegando assim: htmlspecialchars($_POST["nome"])
no script de upload ele pega soh o nome do arquivo e mais nada
e no submit ele pega só os valores preenchidos no formulário mas o nome do arquivo não pega.
oi, consegui fazer dessa forma:
post_params: {"PHPSESSID": "<?php echo session_id(); ?>", 'nome': "zé da silva" },
porém eu precisava de algo desse tipo:
post_params: {"PHPSESSID": "<?php echo session_id(); ?>", 'nome': "getElementById('nome').value" },
Alguém sabe como poderia fazer isso?
Bom galera, o atributo nome nao funciona pq chamei ele com getelementbyid.
o atributo empresa funciona pq setei manualmente.
já tentei fazer de tudo pra pegar o dado quando vai enviar o arquivo mas nada de funcionar....
<script type="text/javascript">
var nome;
var empresa;
var swfu;
window.onload = function () {
nome = document.getElementById('nome').value;
empresa = 'teste';
swfu = new SWFUpload({
// Backend settings
upload_url: "upload.php",
flash_url : "swfupload/swfupload.swf",
file_post_name: "filedata",
// Flash file settings
post_params: {"PHPSESSID": "<?php echo session_id(); ?>", 'nome': nome, 'empresa':empresa},
file_size_limit : "100 MB",
file_types : "*.zip;*.rar;*.pdf;*.doc;*.docx;*.xls;*.xlsx;*.avi;*.wmv;*.mov;*.jpg;*.png;*.psd;*.swf;*.fla", // or you could use something like: "*.doc;*.wpd;*.pdf",
file_types_description : "All Files",
file_upload_limit : "0",
file_queue_limit : "1",
// Event handler settings
swfupload_loaded_handler : swfUploadLoaded,
file_dialog_start_handler: fileDialogStart,
file_queued_handler : fileQueued,
file_queue_error_handler : fileQueueError,
file_dialog_complete_handler : fileDialogComplete,
//upload_start_handler : uploadStart, // I could do some client/JavaScript validation here, but I don't need to.
upload_progress_handler : uploadProgress,
upload_error_handler : uploadError,
upload_success_handler : uploadSuccess,
upload_complete_handler : uploadComplete,
// Button Settings
button_image_url : "conteudo/teste.png",
button_placeholder_id : "spanButtonPlaceholder",
button_width: 61,
button_height: 22,
custom_settings : {
progress_target : "fsUploadProgress",
upload_successful : false
},
// Debug settings
debug: false
});
};
</script>Você precisa entender o momento em que cada coisa roda..
eu mesmo não entendi bem oque você quer fazer.. veja que está sendo chamado num:
window.onload = function () {portanto, irá pegar o nome = document.getElementById('nome').value; do momento em que o DOM estiver pronto, e não de qndo o usuário digitou algo.
Como está o teu HTML? e o arquivo de upload do swf ??
Realmente, o nome do arquivo está em: $_FILES['Filedata']['name']; pelo swfupload.
você não vai pegar esse 'name' do arquivo na hora do submit, mas antes, pois esse upload é assincrono.
Se você precisa dele 'para depois' do submit, você pode no arquivo de upload do swfupload, salvar numa SESSION, e depois fazer oque você quiser, junto com oque vier nos $_POST...
então... vou tentar explicar melhor
o que eu preciso é que a cada arquivo enviado, o sistema mande um email com o nome do arquivo e os dados digitados no formulario.
isso pode ser no momento em que faz o upload ou depois quando da o submit.
entao o que acontece é que se o email é enviado no momento do upload, só consigo pegar o nome do arquivo.
mas se o email é enviado no submit entao eu consigo os dados do formulario mas nao consigo o nome do arquivo.
como faço para salvar o nome do arquivo na session? se conseguir salvar o nome do arquivo na session ficaria perfeito.
não estou no computador que estão os códigos, estou em viagem mas na segunda feira posto o html.
minha classe de upload onde é registrado a session:
<?php
session_start();
include_once "upload.class.php";
$upload->arquivoTemporario = $_FILES['filedata']['tmp_name'];
$_SESSION["arquivo"] = $_FILES['filedata']['name'];
die($upload->enviarArquivo());
?>
classe onde quero pegar os dados:
<?php
session_start();
echo $_SESSION["arquivo"]
echo htmlspecialchars($_POST["nome"]);
echo htmlspecialchars($_POST["empresa"]);
?>
não funcionou com session. não sei se fiz algo errado.. mas o session 'arquivo' sempre vem vazio.
index.php:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="[http://www.w3.org/1999/xhtml"](http://www.w3.org/1999/xhtml) >
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>titulo.</title>
<link href="css/default.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="swfupload/swfupload.js"></script>
<script type="text/javascript" src="js/fileprogress.js"></script>
<script type="text/javascript" src="js/handlers.js"></script>
<script type="text/javascript">
window.onload = function () {
swfu = new SWFUpload({
// Backend settings
upload_url: "upload.php",
flash_url : "swfupload/swfupload.swf",
file_post_name: "filedata",
// Flash file settings
file_size_limit : "100 MB",
file_types : "*.zip;*.rar;*.pdf;*.doc;*.docx;*.xls;*.xlsx;*.avi;*.wmv;*.mov;*.jpg;*.png;*.psd;*.swf;*.fla", // or you could use something like: "*.doc;*.wpd;*.pdf",
file_types_description : "All Files",
file_upload_limit : "0",
file_queue_limit : "1",
// Event handler settings
swfupload_loaded_handler : swfUploadLoaded,
file_dialog_start_handler: fileDialogStart,
file_queued_handler : fileQueued,
file_queue_error_handler : fileQueueError,
file_dialog_complete_handler : fileDialogComplete,
//upload_start_handler : uploadStart, // I could do some client/JavaScript validation here, but I don't need to.
upload_progress_handler : uploadProgress,
upload_error_handler : uploadError,
upload_success_handler : uploadSuccess,
upload_complete_handler : uploadComplete,
// Button Settings
button_image_url : "conteudo/teste.png",
button_placeholder_id : "spanButtonPlaceholder",
button_width: 61,
button_height: 22,
custom_settings : {
progress_target : "fsUploadProgress",
upload_successful : false
},
// Debug settings
debug: false
});
};
</script>
</head>
<body>
<div id="content">
<form id="form1" action="thanks.php" enctype="multipart/form-data" method="post">
<table style="vertical-align:top;">
<tr>
<td><label for="nome">Nome:</label></td>
<td><input class="arquivos" name="nome" id="nome" type="text" style="width: 270px" /></td>
</tr>
<tr>
<td><label for="empresa">Empresa:</label></td>
<td><input class="arquivos" name="empresa" id="empresa" type="text" style="width: 270px" /></td>
</tr>
<tr>
<td><label for="email">E-mail:</label></td>
<td><input class="arquivos" name="email" id="email" type="text" style="width: 270px" /></td>
</tr>
<tr>
<td><label for="telefone">Telefone:</label></td>
<td><input class="arquivos" name="telefone" id="telefone" type="text" style="width: 270px" /></td>
</tr>
<tr>
<td><label for="txtFileName">Arquivo:</label></td>
<td>
<div>
<div>
<input type="text" id="txtFileName" size="41" disabled="true" style="border: solid 1px; background-color: #FFFFFF;" />
<span id="spanButtonPlaceholder"></span>
(100 MB max)
</div>
<div class="flash" id="fsUploadProgress">
<!-- This is where the file progress gets shown. SWFUpload doesn't update the UI directly.
The Handlers (in handlers.js) process the upload events and make the UI updates -->
</div>
<input type="hidden" name="hidFileID" id="hidFileID" value="" />
<!-- This is where the file ID is stored after SWFUpload uploads the file and gets the ID back from upload.php -->
</div>
</td>
</tr>
<tr>
<td><label for="coments">Comentários:</label></td>
<td><textarea class="taarquivos" name="coments" id="coments" cols="0" rows="0" style="width: 400px; height: 100px;"></textarea></td>
</tr>
</table>
<br />
<input type="submit" value="Enviar Arquivo" id="btnSubmit" />
</form>
</div>
</body>
</html><?php
session_start();
include_once "upload.class.php";
$upload->arquivoTemporario = $_FILES['filedata']['tmp_name'];
$_SESSION["arquivo"] = $_FILES['filedata']['name'];
die($upload->enviarArquivo());
?>
upload.class.php:
<?
class Upload {
public $nomeArquivo;
public $caminhoArquivo;
public $arquivoTemporario;
public function __construct (){
$this->nomeArquivo = '';
$this->caminhoArquivo = './';
$this->arquivoTemporario = '';
}
/**
* Método que grava o conteudo no arquivo via move upload
*/
public function enviarArquivo () {
# cria o caminho do arquivo
$tempFile = $this->arquivoTemporario;
$targetFile = $this->caminhoArquivo.$this->nomeArquivo;
move_uploaded_file($tempFile,$targetFile);
}
}
?><?php
session_start();
$to = 'email@email.com.br';
$msg = "Nome do arquivo: \t".$_SESSION["arquivo"]."\n";
$msg .= "Local do arquivo: Pasta Material \n";
$msg .= "Responsável: ".htmlspecialchars($_POST["nome"])."\n";
$msg .= "Empresa: \t".htmlspecialchars($_POST["empresa"])."\n";
$msg .= "E-mail: \t".htmlspecialchars($_POST["email"])."\n";
$msg .= "Telefone: \t".htmlspecialchars($_POST["telefone"])."\n";
$msg .= "Descrição: \t".htmlspecialchars($_POST["coments"])."\n";
$headers = "From: Upload - Site\n";
$headers .= "MIME-Version: 1.0\n";
$headers .= "Content-type: text;charset=utf-8";
mail($to, "ARQUIVO RECEBIDO!", $msg, $headers);
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="[http://www.w3.org/1999/xhtml"](http://www.w3.org/1999/xhtml) >
<head>
<title>InfoTV - Informação no ponto certo.</title>
<link href="css/default.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="content">
<hr width="100%" />
<table>
<tr>
<td>Arquivo: </td>
<td><?php echo htmlspecialchars($_SESSION["arquivo"]); ?> </td>
</tr>
<tr>
<td>Responsável: </td>
<td><?php echo htmlspecialchars($_POST["nome"]); ?> </td>
</tr>
<tr>
<td>Empresa: </td>
<td><?php echo htmlspecialchars($_POST["empresa"]); ?> </td>
</tr>
<tr>
<td>E-mail: </td>
<td><?php echo htmlspecialchars($_POST["email"]); ?> </td>
</tr>
<tr>
<td>Telefone: </td>
<td><?php echo htmlspecialchars($_POST["telefone"]); ?> </td>
</tr>
<tr>
<td>Comentários: </td>
<td><?php echo htmlspecialchars($_POST["coments"]); ?> </td>
</tr>
</table>
<?php if ($used_degraded) { ?>
<p>InfoTV.</p>
<?php } ?>
<hr width="100%" />
<br>
<p> obrigado por enviar do seu arquivo. </p>
<p><a href="envia.php">Enviar outro arquivo.</a></p>
</div>
</body>
</html>
tudo o que preciso é pegar o nome do arquivo no arquivo thanks.php. e até agora está dificil, nem sinal do nome do arquivo!!
valeu bruno por tentar ajudar.
Alguém sabe como posso fazer isso?
dae cara.. eu to com um problema parecido. não consigo passar parametros com para o upload.php... tu conseguiu resolver isso?
vlw.
ainda nao... estou lutando com isso ainda!!
dae..
o estranho é que o arquivo upload.php se eu coloco um echo qualquer.. não mostra nada na tela.. ou seja, parece que não passa por lá. isso ocorre contigo também?
vlw.
>
dae..
o estranho é que o arquivo upload.php se eu coloco um echo qualquer.. não mostra nada na tela.. ou seja, parece que não passa por lá. isso ocorre contigo também?
vlw.
isso ocorre pq o upload.php eh executado antes de acontecer o submit no form...... não da tempo de aparecer, mas por exemplo se você colocar para enviar um email no upload.php ele vai enviar.... o problema eh que nao sei como fazer pra pegar os dados do form no upload.php. soh consigo o nome do arquivo.
estou a mais de 1 mes nesse problema..
você quer enviar via AJAX esses dados ?