Pergunta

Eu estou experimentando com SWFUpload ( http://swfupload.org ) e eu estou querendo saber se, em PHP, seus dados ainda estarão no array $ _FILES. Se não, onde ela vai?

Foi útil?

Solução

SWFUploader usa HTTP POST para enviar os arquivos. Então, a partir da perspectiva do PHP, não é diferente de um ser postado com um arquivo.

O arquivo estará em $ _FILES e os postvars extras estarão em $ _POST.

Outras dicas

Vou postar um exemplo completo usando swfupload e PHP. Acredito documentos SWFUpload não são muito úteis para iniciantes e este exemplo poderia ajudar muitas pessoas. o que você precisa fazer o download está seguindo

Copiar / criar todos os arquivos necessários primeira

  • Baixar núcleo v2.2.x.y e amostras
  • Em seguida, crie a seguinte estrutura de pasta

crie uma pasta chamada swfupload e copiar seguintes arquivos do núcleo 2.2.x.y nele

  • swfupload.js (de pasta raiz core)
  • swfupload swf arquivo (de pasta core / Flash)

copiar seguintes arquivos do 2.2.x demos pasta para o nosso swfupload pasta

  • default.css (a partir de amostras 2.2.x.y / demos / css)
  • copiar 2.2.x.y amostras / demos / simpledemo / js pasta aqui (como é)
  • copiar 2.2.x.y amostras / demos / imagens pasta aqui (como é)

Agora crie um script PHP para receber o arquivo (chamemos-lhe receiver.php) dentro da pasta swfupload. Agora você tem uma pasta chamada swfupload dentro de sua raiz do documento que contém todos os arquivos necessários.

Criar página html teste com controle swfupload

 <!-- file upload component  -->
    <div class="fieldset flash" id="fsUploadProgress">
        <span class="legend">Upload Queue</span>
     </div>
     <div id="divStatus">No Files Uploaded</div>
      <div>
          <span id="spanButtonPlaceHolder"></span>
      <input id="btnCancel" type="button" value="Cancel All Uploads" onclick="swfu.cancelQueue();" disabled="disabled" style="margin-left: 2px; font-size: 8pt; height: 29px;" />
      </div>

incluem javascript para interagir com o controle swfupload

Agora você tem que incluir arquivo css swfupload e arquivos javascript necessários dentro do nosso html teste. Nós também temos que inicializar e configurar os js obrigados a interagir com o controle swfupload.

<link href="/swfupload/default.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="/swfupload/swfupload.js"></script>
<script type="text/javascript" src="/swfupload/js/swfupload.queue.js"></script>
<script type="text/javascript" src="/swfupload/js/fileprogress.js"></script>
<script type="text/javascript" src="/swfupload/js/handlers.js"></script>


<script type="text/javascript">
            //attach events
            $(document).ready(function(){
                $("a.removeMedia").live("click", function(event){
                    event.preventDefault();
                    var docId = $(this).attr("id");
                    //remove flexi data
                    webgloo.gMedia.table.removeRow(docId);
                }) ;

                //initialize gMedia table with documentId coming from server
                webgloo.gMedia.debug = false ;
                webgloo.gMedia.table.load();

            });

            //swffileupload related javascript
            var swfu;

            window.onload = function() {
                var settings = {
                    flash_url : "/swfupload/swfupload.swf",
                    upload_url: "/swfupload/receiver.php",
                    post_params: {"PHPSESSID" : "<?php echo session_id(); ?>"},
                    file_size_limit : "10 MB",
                    file_types : "*.*",
                    file_types_description : "All Files",
                    file_upload_limit : 100,
                    file_queue_limit : 0,
                    custom_settings : {
                        progressTarget : "fsUploadProgress",
                        cancelButtonId : "btnCancel"
                    },
                    debug: false,

                    // Button settings
                    button_image_url: "/swfupload/images/TestImageNoText_65x29.png",
                    button_width: "65",
                    button_height: "29",
                    button_placeholder_id: "spanButtonPlaceHolder",
                    button_text: '<span class="theFont">Upload</span>',
                    button_text_style: ".theFont { font-size: 16; }",
                    button_text_left_padding: 12,
                    button_text_top_padding: 3,

                    // The event handler functions are defined in handlers.js
                    file_queued_handler : fileQueued,
                    file_queue_error_handler : fileQueueError,
                    file_dialog_complete_handler : fileDialogComplete,
                    upload_start_handler : uploadStart,
                    upload_progress_handler : uploadProgress,
                    upload_error_handler : uploadError,
                    upload_success_handler : uploadSuccess,
                    upload_complete_handler : uploadComplete,
                    queue_complete_handler : queueComplete  // Queue plugin event
                };

                swfu = new SWFUpload(settings);
            };

        </script>

Por favor, veja as mudanças que você precisa fazer nas configurações. Agora nós estamos prontos para bater o script PHP. vamos acertar o script PHP e PHP script retornará alguma resposta que o nosso html teste pode usar (coisas como localização doc, ou DOC_ID se você estiver armazenando em um DB, nome, tamanho, mime) etc. pode ser devolvido.

script PHP para o processamento do lado do servidor

Se você sabe como lidar com arquivos em PHP, então a única coisa que você precisa saber é que o nome do elemento arquivo enviado pelo swfupload é Filedata. descansar todos é detalhes. Após o processamento do seu upload de arquivos via $ _FILES, seu script receptor pode retornar alguns dados que podem ser usados ??para atualizar o html com detalhes do documento. A amostra PHP carregamento incluído no fórum swfupload é spaghetti puros. se você quiser olhar @ um modelo orientado objeto, olhar @ seguinte arquivos

http://code.google. com / p / Localo / fonte / browse / trabalho / web / swfupload / receiver.php http://code.google.com/p/localo/source/browse/lib/webgloo/common/Upload.php http://code.google.com/p /localo/source/browse/lib/webgloo/job/FileUpload.php

Isso é apenas para fins ilustrativos. O código não vai funcionar, pois é, pois tem dependências em minha biblioteca.

fiação PHP script de dados de volta retorno em html contendo controle swfupload

Este é o último passo. o que o script servidor retorna em um upload bem-sucedido deve ser processado por um dos manipuladores javascript SWFUpload para atualizar o html (dizem armazenar retornou de upload de arquivos URI no documento para mais enviá-lo para algum outro roteiro etc.) A maneira como você pode fazer a fiação está aberto -se /swfupload/js/handlers.js e fazer mudanças lá.

function uploadSuccess(file, serverData) {
    // The php script may return an error message etc. but the handler event for swfupload
    // client is still uploadSuccess. we have to parse data returned from server to find known/script
    // error case.
    try {
        var progress = new FileProgress(file, this.customSettings.progressTarget);
        //try parsing server data now
        var dataObj ;

        try{
            if(webgloo.gMedia.debug) {
                alert("server returned => " + serverData);
            }

            dataObj = JSON.parse(serverData);
            //process server data
            if(dataObj.error === undefined || dataObj.error != 'yes'){
                //no error object or error is not yes!
                //process document object received from server
                webgloo.gMedia.table.addRow(dataObj.document.uuid, dataObj.document.originalName);
                progress.setComplete();
                progress.setStatus(dataObj.message);
                progress.toggleCancel(false);
            }else {
                //known error
                progress.setStatus("Error: " + dataObj.message);
            }

        } catch(ex) {
            //we need to gaurd against JSON parsing errors as well
            progress.setStatus("Error: " + ex.toString());
        }


    } catch (ex) {
        this.debug(ex);
    }
}

Você pode Fio Quente seu próprio javascript aqui. Para uma amostra (Estou atualizando a tabela de documentos e armazenamento de documentos retornados metadados como uma string JSON no documento de formulário) consulte aqui:

http://code.google. com / p / Localo / fonte / browse / trabalho / web / js / main.js

Espero que isso é informação suficiente para você começar com swfupload. Feliz codificação:)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top