2012-06-15 23 views
12

Bu kodla ilgili sorunun ne olduğunu bilen herhangi biri varsa bana bildirin.PHP-jquery post'u kullanarak dosya yükleme

Temelde i

<?php 
    echo $file['tmp_name']; 
?> 

Uploaded Dosya adı geri döndürülmez

<html> 
<head> 
    <script src="http://code.jquery.com/jquery-latest.js"></script> 

    <script type="text/javascript"> 
    $(document).ready(function(event) { 
     $('#form1').submit(function(event) { 
     event.preventDefault(); 
     $.post('post.php',function(data){ 
      $('#result').html(data); 
     }); 
     }); 
    }); 
    </script> 
</head> 
<body> 
<form id="form1"> 
    <h3>Please input the XML:</h3> 
    <input id="file" type="file" name="file" /><br/> 
    <input id="submit" type="submit" value="Upload File"/> 
</form> 

<div id="result">call back result will appear here</div> 

</body> 
</html> 

jQuery

ve benim php 'post.php' kullanarak bir dosya yüklemek istiyorum. Sorun yüklenen dosyaya erişemedim.

Şimdiden teşekkürler! Hançer

+0

ne –

cevap

16

Temelde i

Sen AJAX kullanarak dosyaları karşıya olamaz jQuery

kullanarak bir dosyayı yüklemek istediğiniz FileAPI/BlobApi HTML5 yüklemeyi kullanmaktır .
<html> 
<head> 
    <script src="http://code.jquery.com/jquery-latest.js"></script> 
    <script src="http://malsup.github.com/jquery.form.js"></script> 
    <script type="text/javascript"> 
     $(document).ready(function(event) { 
      $('#form1').ajaxForm(function(data) { 
       $('#result').html(data); 
      }); 
     }); 
    </script> 
</head> 
<body> 
<form id="form1" action="post.php" method="post" enctype="multipart/form-data"> 
    <h3>Please input the XML:</h3> 
    <input id="file" type="file" name="file" /><br/> 
    <input id="submit" type="submit" value="Upload File"/> 
</form> 

<div id="result">call back result will appear here</div> 

</body> 
</html> 

Ayrıca formda enctype="multipart/form-data" dikkat edin: Bir gizli çerçeve kullanır jquery.form eklentisi kullanabilirsiniz.

Başka bir olasılık, istemci tarayıcısının bunu desteklediğini varsayarak, HTML5 File API'u kullanmanızdır.

+0

AJAX kullanarak dosya yükleyemediğiniz veya jQuery's post() yöntemini kullanarak dosya yükleyemediğiniz mi demek istediniz? –

5

Hayır hayır, async yükleme dosyaları için jQuery form eklentisi kullanmalısınız. JQuery $ .post yöntemiyle dosya yükleyemezsiniz. Dosya gizli iframe ile yüklenecektir

bir başka yolu

+0

Teşekkür dostum yapıyoruz! Şimdilik, jquery yazısı yerine normal html form gönderimine gideceğim. Bu şekilde, benim için çalışıyor! – Shiv

0

$ .post yöntemiyle bir dosya gönderemediğiniz için iframe ile yüklemeyi deneyin.

-1

Şunu da deneyebilirsiniz jquery Uploadify - http://www.uploadify.com/

+0

Tarayıcıda bunun için bir API olduğunda, neden harici bir kitaplıkla gidersiniz? – Heitara

+0

Uzun zaman önce dosya yükleme hakkında konuşuyorduk, yeni teknolojiler geliştirme açısından bir asır veya daha fazla söyleyebilirim. Ne zaman html5 ya da sadece başlangıç ​​ve saf html gerekli flaş (çoğunlukla) daha fazla bir şey olduğunu teklif ettiğinde.Uploadify o zamanlar oldukça iyi bir kütüphane oldu ve diğer özellikler arasında ilerleme çubuğu, çoklu dosya yükleme, sürükle ve bırak ve eğer doğru hatırlamıyorsam jquery tabanlıydı. – norbi771

6

Bu jQuery $ .post ile dosya yüklemek mümkün değildir, de, yine de, dosya API ve XMLHttpRequest ile, bu AJAX bir dosya yüklemek için mükemmel mümkündür, ve mümkün Bu ürüne henüz indirilenler ne kadar bilginiz var…

$('input').change(function() 
{ 
    var fileInput = document.querySelector('#file'); 

    var xhr = new XMLHttpRequest(); 
    xhr.open('POST', '/upload/'); 

    xhr.upload.onprogress = function(e) 
    { 
     /* 
     * values that indicate the progression 
     * e.loaded 
     * e.total 
     */ 
    }; 

    xhr.onload = function() 
    { 
     alert('upload complete'); 
    }; 

    // upload success 
    if (xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 0)) 
    { 
     // if your server sends a message on upload sucess, 
     // get it with xhr.responseText 
     alert(xhr.responseText); 
    } 

    var form = new FormData(); 
    form.append('title', this.files[0].name); 
    form.append('pict', fileInput.files[0]); 

    xhr.send(form); 
} 
+0

Ne yazık ki XHR2 desteği henüz iyi değil. Ama bu konudaki girdiniz için teşekkürler, bu yaklaşımı kullanarak Zepto ve bazı sahte verilerle tam bir çalışma testi yapmayı başardım. –

+0

Mevcut tüm büyük tarayıcı sürümleri bunu destekler (hatta IE 10+). http://caniuse.com/xhr2 – Buzut

0

Yüklemenizin bir hata mesajı vardır.

Bu parçayı değiştirmelisiniz.

echo $file['tmp_name']; 

için: -

echo $_FILES['file']['tmp_name'];