Yaklaşık bin görüntüleri için PHP uploader?

5 Cevap php

Ben bir websitwe üzerinde çalışıyorum ve ben bin resim bana yakın göndermek için bir istemci gerekir. Aramızdaki coğrafi mesafe biraz böylece bir CD veya SD kart posta iken tercih edilmez, imkansız değildir, vardır. Ben müşteri resim göndermek, ya da daha iyi bir yolu var olması için bir PHP aktarıcı yazabilir miyim? Ben herhangi bir dosya paylaşım sitelerine abone olmak istemiyorum.

Ben böyle bir aktarıcı yazıyorum varsayarsak, bir progresbar ve / veya kesintiye yüklenme ile bozuk dosyaları karşı korumak bazı diğer özellikleri kodlamak için bir yol var mı?

Yardımcı kaynaklara herhangi bir bağlantıları bir artı vardır.

Teşekkürler

EDIT:

Bu tek seferlik bir şey olduğunu ve bu biz tartışıyoruz yüksek kaliteli görüntüler. Bu olacak bir kaç GB olacak.

FTP Space tarafından, benim FTP sunucusuna bir kullanıcı adı ve pwd demek? Bu yapılabilir, ama (neden) bir FTP istemcisi bir web tabanlı bir aktarıcı daha iyi? Ben müşteri nasıl bilir ya da bir FTP programı indirmek istiyor emin değilim. İstemci bir Mac ve ben gördüğüm Mac için birkaç FTP programı güvenmiyorum.

Iş PHP, ben rota "tek bir zip her şeyi" alacak varsayarsak?

Teşekkürler again.

EDIT:

Okay, so far I've been convinced not to use PHP unless we use .zip files. Also, I probably will nix the progress bar for now. Waiting for client, will get back to everyone in the next few days.

EDIT:

Met the client at some sort of function. The client had the photos there on a flash drive. Problem solved. +1 for all of the input.

5 Cevap

Diyorum bazı FTP boşluk, ya bir WebDAV paylaşımına kuracak. Bunu yapamıyorsanız o zaman ben doğrusu çok zaman tarayıcıları gibi alıcı olacaktır benzersiz yüklenenler yüzlerce ile başa çıkmak için çalışmak yerine, zip dosyaları tek bir (ya da küçük numara) resim yüklemek istiyorum sadece tek bir dosyayı seçecek Bir dosya yükleme iletişim bir anda (yani sadece yüklemek için bir bütün dizin seçemezsiniz).

Why not to use PHP in this instance:

Basit bir dosya yükleme işleyicisi yazmak PHP kolaydır ama çok büyük yüklenenler işlemek istiyorum eğer dosya boyutu yükleme sınırları, script excution zaman sınırları ve hafıza limitleri konusunda dikkatli olmak gerekir gibi biraz tricker bulunuyor. Bu kurulum için ilk kez biraz sinir bozucu olabilir.

Eğer bir HTTP yükleme bunu olarak çalışan alıyorum, neden sormak varsa istediğiniz dayalı (gitmek istediğiniz yol değildir o işlemek isteyen bir çok GB dosya varsa muhtemelen sizin için çok sinir bozucu bir süreç olacak .)

Birkaç mükemmel FTP istemcileri Mac OS üzerinde vardır, ve bir FTP istemcisi daha dosyaları aktarmak daha iyi bir yöntem olduğu için bir web tarayıcısı güven için hiçbir neden yoktur.

Regarding progress bar support:

Currenly ilerleme çubuğu desteği çok (şu anda sadece az tüylü 3. parti modülleri üzerinden) Ben standart dağıtım modülü dahil bir plan var inanıyoruz rağmen PHP sınırlıdır. Uploadprogress.so Googling ilgili bazı sonuçlar vermelidir.

Littlegreen cevap olarak:

(- Ben şimdi bu sorunu çözdünüz düşünüyorum rağmen ben zaten yüklü olduğu en azından bir uzantısı ile çakışmaması için yönetilen) ve javascript işleyicisi (http://iaincollins.com/javascript/FileUploader.js özel bir yazdı ben bu uzantıyı http://pecl.php.net/package/uploadprogress kullanılır ) her iyi birleştirmek için bir çaba, web üzerinde bazı çoklu örneklere göre. örneğin Bir DHTML dosya yükleme iletişim kutusu oluşturma ve şeffaf yapma ve kendi denetiminin üstünde yayılması ile çirkin tarayıcı tabanlı dosya yükleme kontrolü yerine, şeffaf yükleme ilerleme dönmek için görünmez bir iframe kullanarak (yani olabildiğince, hala tıklanabilir oldu siz) yükleme için seçilmiş dosyanın adını alabilirsiniz, ancak 't, JavaScript gelen dosya yükleme iletişim çağırmak. CSS stil hakkı alma Bu özellikle önemli olduğunu - oldukça tarayıcı belirli bulunuyor.

Yazdığım JS ne yazık ki çok durum özeldir, ancak bazı yardımcı unsurlar olabilir - Ben bir özel arayüzü için oluşturulmuş gibi bağlayabilirsiniz kamu şey yok üzgünüm.

http://nixbox.com/demos/jquery-uploadprogress.php ... Ben iyi örnekler birden fazla dosyayı ele dahil olmak üzere, orada olmak hatırlama: her şeyi yapmaz, ama iyi bir başlangıç ​​olacağını - Ben bir jQuery eklentisi artık uploadprogress orada görmek yüklemeler (onları kuyruk ve bunları sırayla gerçekleştirerek - hala bir seferde bir dosya seçmek zorunda kaldım) ama ne yazık ki ben onları bulmak için görünmüyor olabilir.

Conclusion:

Ben denemek ve önlemek güçlük ve zaman yoksa FTP alanı veya dosya transferi uygulaması akran Özel / eş gibi bir şey yapmak istiyorum.

Dosya Aktarım Protokolü (adı olarak ima) özellikle, büyük dosya transferi için tasarlanmış ve çok az yapılandırma gerekir (eğer kaynak sınırları içine yayınlanmaz) ve makul bir istemci FTP özgeçmiş destek bekleyebilirsiniz olarak daha iyi bir seçenek olduğunu sunucu (indir tezgahları, onlar yerine bir PHP dosyası HTTP tabanlı yükleme ile yapmak zorunda tekrar sıfırdan başlamak yerine, kaldığı yerden itibaren devam kolayca mümkün olmalıdır eğer yani) yok varsayarak.

(Web sunucusu ve PHP - yukarıda belirtildiği gibi) HTTP o kadar sağlam değil yükleme dosyaları işlemek için yetenek ve çeşitli kaynak sınırlarını olsa açıkça bir multi GB dosya yükleme yapmak için yapılandırılmış olması gerekir. Hatta WebDAV ile başlıca nedeni arabası istemci uygulamaları için, (HTTP bir uzak dosya sistemi sever kullanarak) şeffaf ama o FTP gibi sağlam olması için değil eğilimindedir - Windows ve Mac OS hem de çok büyük dosyaları aktarırken özellikle sorunlar olabilir, her ne kadar küçük (örn. <500 MB) dosya aktarımı için genelde iyi.

Bir yan not olarak, HTML5 şartname dosyası yüklenenler nasıl ele artıracak - Aynı anda birden fazla dosya upload imkanı ile, ve dosya ile şartnamenin bir parçası olarak ilerleme yükleme, ama şimdi gerçekten bir seçenek değil.

Ben nedeni (gerekirse), start / duraklat / durdur ve klasör hiyerarşisini korumak toplu yüklenenler yapabileceği olmak, FTP öneririm. Mac için FTP çözümler büyük; Ben İletim ve Cyberduck kullanın. Filezilla da iyidir.

Müşteriniz size fotoğrafları indirebilirsiniz hangi yerel bir FTP sunucusu kurmak için onun Mac kullanmak için başka bir FTP seçenek olacaktır. Bu yapılandırmada biraz gerektirir, ama kesinlikle mümkün olacaktır.

Her durumda, dosyaların Ben bu miktar için bir tarayıcı-tabanlı dosya yükleme tavsiye etmem. Tek-tek (ya da gruplar halinde) yükleyin, bir whole lot of hassle for your client oluşturmak olasıdır. PHP'nin sonrası parametreleri ve dosya boyutu kısıtlamaları yüklemek zor bir arşiv tüm görüntüleri sıkıştırmak yapacak ve tarayıcılar genellikle duraklatmanın taşıma ve sürdürme yeteneğine sahip değil gibi büyük dosyaları transfer aşımı sorunlarına neden olabilir.

Tarayıcı tabanlı yüklenenler istisnası gibi SWFUpload gibi bir Flash tabanlı dosya aktarıcı, kullanmaktır. Bununla beraber, dosyaları sunucu tarafı komut dosyası (ki PHP olabilir) için sıraya ve bir-bir tarih olacak sonra, istemci tek seferde tüm dosyaları seçmek olabilir. Aslında, müşteri bana dosya göndermek icar çok aynı amaç için bu kullandım.

Ben hala bu durumda FTP tavsiye, o söyledikten sonra.

Dosya sayısını göz ardı ederek, ne kadar veri bahsediyoruz?

Dosyaların sayısı hakkında endişeleriniz varsa, sadece müşteri onları zip var. Sen sunucuda zip sıkıştırması ve onlar gitmek gerekir her yerde görüntüleri koyabilirsiniz.

Bu düzenli olarak gerçekleşmesi için gidiyor bir süreçtir, ya da düzensiz bir bakım ya da bir kerelik başlangıç ​​görev ise de, kendinize sorun? Eğer öyleyse, sadece ftp veya başka bir yöntem ile dosya alışverişi kendinizi ve müşteri zaman ve paradan tasarruf edeceksiniz.

Ben sadece bir müşteri için benzer bir sorunu çözmek zorunda. Bunlar düzenli ONLARIN müşterilerine normalde FTP aracılığıyla, 300-400MB toplam, onlara dosyaları bir grup yüklemek var. Ancak, bir istemci güvenlik duvarı vardı ve FTP kullanmak olamazdı. Ve bu yüzden bir HTTP aktarıcı kod vardı.

Ben bir PHP çözüm için Internet etrafında aradı ve Ian Collins zaten 1) PHP mümkündür ama tüylü ve PHP 2) İlerleme çubuğu desteği kötü olduğunu belirterek, temelde aynı şeyleri buldum. Upload / boyut sınırları hakkında sürece size bir 3GB upload limitini ve sınırsız komut dosyası yürütülmesine vermelidir aşağıdaki kodu içeren web dizininde bir. Htaccess dosyası dahil olarak ince olmalıdır, ama sana biraz daha bilgi verebilir sürece host htaccess dosyaları PHP conf değerleri ayarlayarak destekler zamanı:

php_value upload_max_filesize 3000M
php_value post_max_size 3000M
php_value max_execution_time 0
php_value max_input_time 0

Bir aktarıcı komut kodlama oldukça basittir. İyi bir öğretici bulundu here.

Bir ilerleme çubuğu kullanarak daha zordur. Bir PHP-yalnızca ilerleme çubuğu uzantıları kurmadan mümkün değildir. Bir genel kabul görmüş bir seçenek, ancak sunucu üzerinde CGI betikleri çalıştırmak mümkün olmasını gerektirir ki, bir hybrid Perl/PHP solution kullanmaktır. Ben, bu yüzden ilerleme çubuğu dışarı bıraktım olamaz. O tarayıcı kilitlenmiştir ve o şekilde kapatır ya onun Internet bağlantısı kesilirse, tekrar baştan başlamak zorunda olacak düşünme, oldukça uzun bir süre için bir non-hareketli ekrana bakıyordu, çünkü bu, olsa da son derece düşmanca istemcisi.

Aynı anda birkaç dosya yükleme de zordur. Birkaç eşzamanlı yükleme oturumu açmak için gelişmiş bir dosya seçimi kontrolü ve AJAX kullanarak uzun bir yol gelebilir, ama aynı sorun ile sol olurdu: çünkü bazı garip dosya, disket dolu veya bağlantı kaybetti, müşteri irade başarısız baştan başlamak zorunda ama zaten sunucuda dosyaların bir karmaşa olacaktır. Bir kullanıcı dostu özgeçmiş çözüm kodlama kolay bir iş değildir. Ben müşteri kendi ZIP dosyaları izin ve bunları toplu olarak yüklemek için tavsiye ediyorum.

Bu bir kerelik bir şey olduğu için, ben kendi çözüm yazma ile rahatsız ve zaten mevcut araçları kullanmak için değil tavsiye ederiz. Neden müşteri kullanımı, FTP, örneğin, izin vermeyin the MAC version of FileZilla? Ya da DropBox? Veya nasıl onu Google Docs için dosya upload beri yakın zamanda yükleme ve herhangi bir dosya paylaşımı 100Mb sağlayan icar hakkında?

Sen çok daha kolay yükleme yapmak için Flash ve Javascript bir kütüphane SWFUpload (http://code.google.com/p/swfupload/), düşünebilirsiniz. Bu PHP ve sahip. Kutudan Net desteği, bu yüzden muhtemelen de sizin ihtiyaçlarınıza uygun olacaktır.

Ben tek bir yükleme oturumda kadar 1.000 görüntüler için kullandım.