2012-06-15 17 views
12

का उपयोग कर PHP फ़ाइल अपलोड अपलोड करें यदि कोई जानता है कि इस कोड के साथ समस्या क्या है।jquery post

असल में मैं jQuery

<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> 

और मेरे php 'post.php' का उपयोग कर

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

अपलोड की गई फ़ाइल का नाम वापस वापस नहीं किए गए एक फ़ाइल अपलोड करना चाहते हैं। समस्या यह है कि मैं अपलोड की गई फ़ाइल तक नहीं पहुंच सका।

अग्रिम धन्यवाद! शिव

+0

तुम क्या कर रहे –

उत्तर

16

असल में मैं jQuery

का उपयोग कर

आप AJAX का उपयोग करके फ़ाइलें अपलोड नहीं कर सकते एक फ़ाइल अपलोड करना चाहते हैं ।

<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> 

इसके अलावा फार्म पर enctype="multipart/form-data" नोटिस: आप जो एक छिपा iframe का उपयोग करता jquery.form प्लगइन का उपयोग कर सकते हैं।

HTML5 File API का उपयोग करने की एक और संभावना है जो आपको यह समझने की अनुमति देता है कि क्लाइंट ब्राउज़र इसका समर्थन करता है।

+0

क्या आपका मतलब है कि आप AJAX का उपयोग कर फ़ाइलों को अपलोड नहीं कर सकते हैं या आप jQuery की पोस्ट() विधि का उपयोग कर फ़ाइलों को अपलोड नहीं कर सकते हैं? –

5

नहीं, नहीं, आपको एसिंक अपलोड करने वाली फ़ाइलों के लिए एक jQuery फॉर्म प्लगइन का उपयोग करना चाहिए। आप jQuery $ .post विधि के साथ फ़ाइल अपलोड नहीं कर सकते हैं। फ़ाइल छिपा iframe के साथ अपलोड किया जाएगा

एक और तरीका है FileAPI/BlobApi साथ एचटीएमएल 5 अपलोड करने का उपयोग करने के

+0

धन्यवाद संभोग! अभी के लिए, मैं सिर्फ jquery पोस्ट के बजाय सामान्य HTML फॉर्म सबमिट के साथ जाऊंगा। इस तरह, यह मेरे लिए काम करता है! – Shiv

0

आईफ्रेम के साथ अपलोड करने का प्रयास करें क्योंकि आप $ .post विधि के साथ फ़ाइल नहीं भेज सकते हैं।

-1

आप भी आजमा सकते jQuery uploadify - http://www.uploadify.com/

+0

जब आप ब्राउज़र के लिए एपीआई रखते हैं, तो आप बाहरी पुस्तकालय के साथ क्यों जाएंगे? – Heitara

+0

क्योंकि हम बहुत समय पहले फाइल अपलोड करने के बारे में बात कर रहे थे, मैं नई प्रौद्योगिकियों के विकास के संदर्भ में एक शताब्दी या अधिक कहूंगा। जब मैंने प्रस्तावित किया कि कोई HTML5 नहीं था या यह अभी शुरू हो रहा था और शुद्ध HTML से अधिक कुछ फ़्लैश (ज्यादातर) आवश्यक था।उस समय अपलोडिफ़ी बहुत अच्छी लाइब्रेरी थी और अन्य सुविधाओं के बीच प्रगति पट्टी की पेशकश की गई, कई फाइलें अपलोड, ड्रैग और ड्रॉप और अगर मुझे सही ढंग से याद किया गया तो jquery आधारित था। – norbi771

6

यह jQuery $ .post वाली फ़ाइलें अपलोड करना संभव नहीं है, तथापि, फ़ाइल एपीआई और XMLHttpRequest के साथ, यह AJAX में एक फ़ाइल अपलोड करने को पूरी तरह से संभव है, और आप कर सकते हैं यहां तक ​​कि यह भी पता है कि अभी तक कितना डेटा अपलोड किया गया है ...

$('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

अफसोस की बात है कि XHR2 के लिए समर्थन अभी तक अच्छा नहीं है। लेकिन इस पर आपके इनपुट के लिए धन्यवाद, मैंने उस दृष्टिकोण का उपयोग करके ज़ेप्टो और कुछ नकली डेटा के साथ पूरी तरह से काम करने का परीक्षण किया है। –

+0

सभी मौजूदा प्रमुख ब्रोवर संस्करण इसे समर्थन देते हैं (यहां तक ​​कि आईई 10+)। http://caniuse.com/xhr2 – Buzut

0

आपकी upload.php में कुछ त्रुटि है।

आपको अपना हिस्सा बदलना चाहिए।

echo $file['tmp_name']; 

लिए: -

echo $_FILES['file']['tmp_name']; 
संबंधित मुद्दे