jqueryForm ve boş yüklenenler

2 Cevap php

Bu çok uzun süre kafamı çizilmemesi Been: jquery.form kullanarak (http://malsup.com/jquery/form) PHP ile ... benim $_FILES['someimage'] set ancak hata numarası her zaman olur {[(2) }], boyutu da 0'dır.

JavaScript:

$('form input[type=file]').change(function () {
    $(this).clone().appendTo('#imgform');
    $('#imgform').ajaxForm();
    $('#imgform').ajaxSubmit({
        type: 'POST'
    });
});

: Ekler Hangi

<form id="imgform" method="POST" action="/api/images.php" enctype="multipart/form-data"></form>

Bataklık standart dosya girişleri olan başka bir form.

PHP günlükleri temiz, ama var_dump $ _FILES ing zaman hiçbir veri kütüğü form öğesinin adına ayarlanmış olduğunu gösterir ... ama.

Thanks guys! (Sorry, I know jQuery-like questions are too frequent round these parts).

EDIT I found Clone a file input element in Javascript which contains further information and suggested alternatives.

Ne yapmaya karar verdim olmayan JavaScript tarayıcılar için tek bir form var, ve JavaScript / jQuery üç formlarına tek bir form tatili:

Head form -> File upload form -> tail form

Sonra dosya yükleme uyumsuz gönderebilir, ve kuyruk göndermenize tıklandığında sadece metin alanları gibi, bir POST bir araya formu tutkal.

2 Cevap

Bu çalıştırmayı denediğinizde gördüğüm iki şey. Eğer ekleme sonra klonlama olduğundan dosya giriş formu kapsamında varsa, ben merak ediyorum. Değilse, o zaman $('form input[type=file]') elemanı klonlanmış olması asla bulamayacağım.

Belki de en büyük sorun olsa da, tarayıcılar dosya yükleme denetimlerini ele yoldur. Programlı bir dosya girişi kumanda üzerinde bir değer ayarlanamaz - aksi takdirde otomatik olarak "c: \ Files \ MyPasswordFile.txt" dosya yükleme değerini ayarlamak için bir web geliştirici olarak önemsiz olacak ve otomatik olarak kullanıcıya görünmez formu gönderin.

Ben bu kodunuzu değişti:

<input type="file" name="imageFile" />
<form id="imgform" method="POST" action="/api/images.php" enctype="multipart/form-data">

</form>

<script>
  $('input[type=file]').change(function() {
    alert("ACTION");
    $(this).clone().appendTo('#imgform');
    //$('#imgform').ajaxForm();
    //$('#imgform').ajaxSubmit(
    //        {
    //          type: 'POST'
    //        }
    //    );
  }); 
</script>

Alan klonlanmış ve eklenir - - Ben yukarıdaki gibi davranış görebilirsiniz ama hiçbir değeri yoktur. Klon sürecin bir parçası yana alan değerini ayarlama içerir - bu güvenlik kısıtlama ihlal edeceğini ve bu nedenle başarısız.

Javascript güvenlik nedeniyle herhangi bir yerel sabit diskinize erişemez gibi ajax kullanarak dosyaları açamazsınız.

IFrames kullanarak ajax ilanı taklit yolu vardır. Bu link iyi bir örnektir.

http://www.ajaxf1.com/tutorial/ajax-file-upload-tutorial.html