Ir para conteúdo

POWERED BY:

Arquivado

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

ToComFome

Como passar parametro com SWFUpload

Recommended Posts

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á.

Compartilhar este post


Link para o post
Compartilhar em outros sites

você quer enviar via AJAX esses dados ?

post_params: {"PHPSESSID": "<?php echo session_id(); ?>", 'id': '15', 'nome': 'Bruno'},
Porque não espera o usuário apertar o SUBMIT do formulário, e ai então você pega tudo com o $_POST ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

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>

Compartilhar este post


Link para o post
Compartilhar em outros sites

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...

Compartilhar este post


Link para o post
Compartilhar em outros sites

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";

# instanciamos a classe
$upload = new Upload();

# pasta que será enviada o arquivo
$upload->caminhoArquivo = 'material/';

# recuperamos o nome do arquivo
$upload->nomeArquivo = $_FILES['filedata']['name'];

# arquivo temporario que está sendo enviado
$upload->arquivoTemporario = $_FILES['filedata']['tmp_name'];

$_SESSION["arquivo"] = $_FILES['filedata']['name'];

# envia o arquivo e retorna se tiver erro
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" >
    <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>

upload.php:

 

<?php
session_start();

include_once "upload.class.php";

# instanciamos a classe
$upload = new Upload();

# pasta que será enviada o arquivo
$upload->caminhoArquivo = 'material/';

# recuperamos o nome do arquivo
$upload->nomeArquivo = $_FILES['filedata']['name'];

# arquivo temporario que está sendo enviado
$upload->arquivoTemporario = $_FILES['filedata']['tmp_name'];

$_SESSION["arquivo"] = $_FILES['filedata']['name'];

# envia o arquivo e retorna se tiver erro
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);
        
    }


}
?>

thanks.php:

 

<?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" >
    <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?

Compartilhar este post


Link para o post
Compartilhar em outros sites

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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

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..

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.