php ile ajax dosya yükleme

8 Cevap php

Ben ajax ve php aracılığıyla bir ikili dosya yüklemek mümkün olup olmadığını bilmek istiyorum, ve bunu indirmek için bir bağlantı olurdu. Ben standart bir html formu ile olduğu gibi, tüm sayfayı yenileyerek önlemek istiyorum. Şimdiye kadar böyle radyo ve metin kutuları gibi, bilgi almak için formları kullanarak ve varsayılan davranışı geçersiz kılmak için javascript kullanarak edilmiştir. Benzer bir şey bir dosya yüklemek için mümkün mü?

8 Cevap

Bu JavaScript ile bir dosyayı göndermek için mümkün değildir.

Sizin seçenekleri şunlardır:

  • Google tarafından popüler gizli iframe hile. Böyle jQuery popüler Form Plugin gibi eklentileri, var bu jQuery olarak orada kütüphaneler, vardır bu yüzden kendinizi bazı klunky şeyler neden olabilir bu uygulama, böylece yok bu otomatik Bunu kullanırken kirli içini hissetmek zorunda.
  • Sürecini kolaylaştırmak için Flash kullanarak. En önemlisi SWFUpload çok popüler. Her şey eşit olmak, ben muhtemelen bu aşkın Javascript çözümü ile gitmek istiyorum, ama başarı ile geçmişte bu kullandım. Bu çözüm hakkında serin şey yükleme gibi göstergeler ve küçük ve gibi güzel bir arayüz ile geliyor olması. Bu noktada olsa da, bazı durumlarda işe yaramayabilir mevcut Flash + Javascript, sahip bir kullanıcı için soruyorsun.
  • Bu, diğer iki çözümlere göre çok daha düşük penetrasyon oranına sahip olarak ben, gerçekten kalıcı bir çözüm olarak düşünün olmaz rağmen, Silverlight yerine Flash kullanarak.

AJAX aracılığıyla bir dosya yüklemek olmasa bile, bir pop-up bir dosya kontrol koymak ve daha sonra bu kapandığında açılan olurken güncelleyebilirsiniz.

Ben açılan olurken sayfasını güncellemek için nasıl çok net değilim, ama ANGEL Öğrenme Management Suite yapılır gördüm.

Form üzerinde ve o iframe olmak için formun hedef belirledi: bir IFrame (yok ekran) var.

Benim formu bu gibi görünüyor:

<iframe id="upload_target" name="upload_target" src="" style="width:0px;height:0px;border:0px solid #fff;"></iframe>
<form enctype="multipart/form-data" name="frmXMLUpload"  target="upload_target" action="scripts/uploadXML.php" method="POST" onSubmit="return checkExtension(fXMLFile.value, 'xml')">
<!--only allow up to 30k of data to be uploaded-->
<input type="hidden" name="MAX_FILE_SIZE" value="30000" />
<input name="fXMLFile" id="fXMLFile" type="file" accept="text/xml" size="50" />
<p><input type="submit" value="Upload" /></p>
</form>

Ve yuor IFRAME yanıt ile uğraşmak. temelde bu hiç AJAX değil, ama kim JavaScript yerel bilgisayardaki dosyalara erişimi istersiniz? Bu güzel o yolu.

Tek başına AJAX / JavaScript bunu yapmak genellikle mümkün değildir.

Bir göz atın:

http://www.codeplex.com/SLFileUpload/

Bir Silverlight uygulaması içinde bunu yapmak için bir yol.

veya:

http://www.element-it.com/Examples/MultiPowUpload/SimpleUpload.html

flaş.

John Gietzen dediği gibi, (ie AJAX ile datayı göndermek) doğrudan AJAX ile bunu yapamaz. Eğer olsa ne yapabileceğini, görünmez bir iframe için form isPost, daha sonra URL için sunucu sormak için AJAX kullanabilirsiniz. Bu temel kullanıcı deneyimini tutacak - sayfayı yenilemeyi değil.

Jquery düşündünüz mü? Incelikle bunu yapmak için güzel eklentiler vardır.

Örneğin bu gibi: http://www.phpletter.com/Our-Projects/AjaxFileUpload/

Bu örneğe bir göz atın, ben phpLetter şeylerin PHP tarafı için daha iyi örnekler olabilir ama, phpLetter de olandan biraz daha iyi eklentisi.

http://www.fyneworks.com/jquery/multiple-file-upload/#tab-Examples

Ayrıca, Flash kullanarak bir ilerleme çubuğu gösteren ve yenileme olmak üzere sayfa için gerek kalmadan dosya yüklemeleri yapar SwfUploader bakmak, sahip olmak isteyebilirsiniz. Gösterileri görülebilir here.