PHP parçalama kullanarak 1GB dosyaları yükleyin

7 Cevap php

Ben 4 MB dosya yüklemelerini kabul eden bir web uygulaması var. Sunucu tarafı komut dosyası PHP ve web sunucusu nginx olduğunu. Birçok kullanıcı izin vermek için büyük ölçüde bu sınırı artırmak istemiş vb video yükleme

Ancak PHP ile bu sorun için kolay bir çözüm gibi görünüyor. Birincisi, istemci tarafında beni transferi sırasında yığın dosya için izin verecek bir şey arıyorum. SWFUpload bunu görünmüyor. Ben Java FX (http://blogs.oracle.com/rakeshmenonp/entry/javafx_upload_file) kullanarak yüklenenler akışı sanırım ama PHP request.getInputStream herhangi bir eşdeğer bulamıyorum.

Belki tarayıcı zaman aşımı ve hafızada saklanan tüm bu lekeler düşünüyorum çünkü tarayıcı client_post sınırları veya php.ini yükleme veya max_execution kez artırılması gerçekten çok büyük dosyaları (~ 1GB) için bir çözüm değildir.

Sunucu tarafında PHP kullanarak bu sorunu çözmek için herhangi bir yolu var mı? Ben cevap seviniriz.

7 Cevap

plupload bir javascript / php kütüphane ve kullanımı oldukça kolay ve parçalama sağlar.

Bu olsa HTML5 kullanır.

"Ama ben PHP request.getInputStream herhangi bir eşdeğer bulamıyorum."

fopen('php://input'); belki?

Nasıl işlem için yükleme ve PHP için bir java uygulaması kullanma hakkında ..

You can find an example here for Jupload: http://sourceforge.net/apps/mediawiki/jupload/index.php?title=PHP_Example

Siz sonrası sınırı ve bu artış gerek yok ... Ben bir eski bir soru olduğunu biliyorum, ama bu 'parçalama' sadece Javascript ile istemci tarafında artık mümkün. Ben birkaç ay önce bir demo yaptık:

dnduploader.filkor.org

  • Bu son derece büyük dosyaları yükleyebilirsiniz.
  • Resumable, kesmek bile böylece yükleme işlemine devam edebilirsiniz ya da 'yanlışlıkla' tarayıcıyı kapatın
  • vb.

GitHub kaynağı.

Kesinlikle daha sonra bir dosyaya veri bu bloğu append (hatta bir POST aracılığıyla) bir veri bloğunu kabul edecek bir web uygulaması yazabilirsiniz. Bu bir dosya almak ve parçalar bölmek, sonra bir anda web hizmeti bir öbek göndereceğiz istemci tarafı uygulama bazı tür gerekir gibi geliyor bana. Ancak, bir SFTP dir oluşturmak ve müşteriler sadece bazı önceden varolan bir istemci uygulaması kullanarak dosyaları sftp izin vermek çok daha kolay görünüyor.

Ben parçalar sunucuları ve istemci ve gönderilen veriler arasında yuvaları oluşturma düşünüyorum! .. Düşük seviye programlama çözüm gibi görünüyor .. bahisler olmayabilir

I have done a free uploader that uploads file with html5 by chunking with no limits and a lot of other features: http://code.google.com/p/ax-jquery-multiuploader/ . I have tested it up to 4GB of upload.

(Ücretli sürüm biraz daha fazla özelliklere sahiptir, Ayrıca ben burada bulunabilir ücretsiz değil sürümü var http://codecanyon.net/item/real-ajax-multi-uploader/805976 ama onlar hemen hemen aynı)