SWFUpload - aşina herkes?

2 Cevap php

Ben (http://swfupload.org) SWFUpload ile deney yaşıyorum ve PHP, veri hala $ _FILES dizi olacak, merak ediyorum. Eğer değilse, nereye gidiyor?

2 Cevap

SWFUploader dosyaları yüklemek için HTTP POST kullanır. Yani PHP'nin bakış açısıyla, bir bir dosya ile nakledilen farklı değildir.

Dosya $ HTTP_POST_FILES olacak ve ekstra postvars $ _POST olacaktır.

Ben SWFUpload ve PHP kullanarak tam bir örnek göndermek için gidiyorum. Ben SWFUpload belgeler yeni başlayanlar için çok yararlı değildir ve bu örnek birçok insana yardımcı olacağını inanıyorum. indirmek için gerekenleri takip ediyor

Copy/create all necessary files first

  • V2.2.x.y çekirdek ve örnekleri indir
  • Sonra aşağıdaki klasör yapısını oluşturun

SWFUpload adında bir klasör oluşturun ve içine 2.2.xy çekirdek aşağıdaki dosyaları kopyalamak

  • swfupload.js (çekirdek kök klasöründen)
  • SWFUpload swf dosyası (çekirdek / Flaş klasöründen)

2.2.x demolar dosyaların aşağıdaki kopyalama bizim SWFUpload klasörünün içine klasör

  • default.css (2.2.x.y örnekleri / demolar / css den)
  • Kopya 2.2.xy örnekleri / demolar / simpledemo / js klasörü burada (olduğu gibi)
  • (olduğu gibi) kopya 2.2.xy örnekleri / demolar / images klasörü buraya

Şimdi SWFUpload klasörün içindeki (o receiver.php diyoruz) dosyayı almak için bir PHP komut dosyası oluşturun. Şimdi tüm gerekli dosyaları içeren belge kök içinde SWFUpload adında bir klasör var.

Create test html page with swfupload control

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

include javascript to interact with swfupload control

şimdi SWFUpload css dosyayı eklemek ve test html içinde javascript dosyaları gereklidir. biz de SWFUpload kontrolü ile etkileşim için gerekli JS başlatmak ve yapılandırmak zorunda.

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

Eğer ayarları yapmanız gereken değişiklikleri bakın. Şimdi PHP komut vurmak için ayarlanır. Biz PHP komut vuracaktır ve PHP script test html (doc konumu gibi şeyler, ya da bir DB, isim, boyut, mim saklanması ise DOC_ID) kullanmak vb iade edilebilir ki bazı yanıt dönecektir.

PHP script for server side processing

PHP dosyaları işlemek için nasıl biliyorsanız o zaman bilmeniz gereken tek şey SWFUpload tarafından gönderilen dosya öğe adı Filedata olmasıdır. Tüm detayları bir dinlenme. $ HTTP_POST_FILES üzerinden dosya yükleme işleme sonra, alıcı script html belge detayları ile güncelleştirmek için kullanılabilecek bazı verileri dönebilirsiniz. SWFUpload forumda dahil PHP yükleme örnek saf spagetti. Eğer bir nesne yönelimli modelin @ bakmak istiyorsanız, aşağıdaki dosyaları @ bakmak

http://code.google.com/p/localo/source/browse/job/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

Bu açıklama amacıyla sadece. Benim kütüphanede bağımlılıkları olduğu gibi olduğu gibi kod çalışmaz.

wiring PHP script return data back into html containing swfupload control

Bu son adımdır. Sunucu komut başarılı bir yükleme üzerinde döner ne kablolama yapabileceğiniz yolu açıktır (depolama döndürülen dosya daha vb diğer bazı komut gönderebilirsiniz için belgede URI yüklemek demek) html güncellemek için SWFUpload javascript işleyicileri biri tarafından işlenmiş olmalıdır yukarı / SWFUpload / js / handlers.js ve orada değişiklik yapmak.

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);
    }
}

Sıcak burada kendi javascript tel olabilir. Bir örnek için (ben belgelerin bir tablo güncelleştiriyorum ve form belgede bir json dize olarak döndürülen belgeleri meta verilerini depolamak) buraya bakın lütfen:

http://code.google.com/p/localo/source/browse/job/web/js/main.js

Ben bu SWFUpload başlamak için yeterli bilgi umuyoruz. Mutlu kodlama :)