2010-08-31 2 views
8

तो मुझे पता है कि similar पद दिया जाना है, लेकिन मुझे लगता है कि यह एक बदलाव के लिए पर्याप्त अपनी ही सवाल वारंट है:पीएचपी फ़ाइल डाउनलोड jQuery के माध्यम से पोस्ट डेटा का उपयोग कर AJAX

मैं में एक XLS निर्यातक निर्माण कर रहा हूँ PHP और jQuery। मैं jQuery के साथ एक सरणी पोस्ट करने की कोशिश कर रहा हूं (जो मुझे लगता है कि एक जीईटी क्वेरीस्ट्रिंग के रूप में बहुत लंबा होने वाला है), और मेरे सर्वर पर एक एक्सएलएस फ़ाइल जेनरेट करने के लिए इसका उपयोग करें, जिसे उपयोगकर्ता डाउनलोड कर सकता है।

मैंने पहले भी छिपा iframes का इस्तेमाल किया है यह पूरा करने के लिए, लेकिन क्योंकि वे सिर्फ एक यूआरएल को अनुप्रेषित, यह मुझे प्राप्त उपयोग करने के लिए की आवश्यकता है, जो मुझे परेशान करता है।

मेरा प्रश्न तो यह है: मैं कैसे एकाधिक उपयोगकर्ताओं द्वारा अगर वे गतिशील रूप से उत्पन्न किया जा रहा हो अपने सर्वर और उन्हें दिए गए लिंक पर उन फ़ाइलों को स्टोर करते हैं, संभावित? क्या एक अलग PHP स्क्रिप्ट के लिए एक छिपी आईफ्रेम लिंक होगा जो उनकी फ़ाइल को सत्र आईडी या उसके जैसा कुछ ढूंढता है?

किसी भी मार्गदर्शन कर रहा हूँ क्या मुझे यकीन है कि पूछा जाता है हर समय पर यहाँ के लिए अग्रिम धन्यवाद :)

उत्तर

9

यह एक छिपा iframe पर पोस्ट करना संभव है। इसलिए, आपको क्वेरी स्ट्रिंग की लंबाई के बारे में चिंता करने की आवश्यकता नहीं है; आप कुंजी/वैल्यू जोड़े पोस्ट करेंगे जो आपकी एक्सएलएस फाइल जेनरेट करेंगे और बाद में ब्राउज़र डाउनलोड फ़ाइल को मजबूर करेंगे। http://particletree.com/notebook/ajax-file-download-or-not/

असल में, सुझाव वर्तमान पृष्ठ पर अपने फ़ॉर्म पोस्ट और एक फ़ाइल डाउनलोड के साथ प्रतिक्रिया करने के लिए है:

<form method="post" action="/download/xls" target="download_xls"> 
    <fieldset> 
    <label>Key 1:</label> 
    <input type="text" name="key_1" /> 
    </fieldset> 

    <fieldset> 
    <label>Key 2:</label> 
    <input type="text" name="key_2" /> 
    </fieldset> 

    <fieldset> 
      <input type="submit" value="Submit" /> 
    </fieldset> 
</form> 

<iframe id="download_xls" name="download_xls" width="0" height="0" scrolling="no" frameborder="0"></iframe> 

अद्यतन एक त्वरित गूगल खोज इस लेख में पहुंचे। यह विकल्प आपके लिए काफी अच्छा हो सकता है।

+0

बहुत अच्छा विचार है, लेकिन दुर्भाग्यवश, लक्ष्य विशेषता फॉर्म तत्वों में बहिष्कृत है, इसलिए मुझे नहीं पता कि यह एक सुरक्षित समाधान होगा या नहीं। – Trafalmadorian

+0

आकर्षक। मैं अभी इसे बाहर करने की कोशिश कर रहा हूं ... यदि यह काम करता है, तो मैं आपका जवाब स्वीकार करूंगा :) – Trafalmadorian

+0

आप सही हैं। इसे HTML 4.1 और XHTML 1.0 में बहिष्कृत किया गया है। हालांकि, यह एक्सएचटीएमएल 1.0 संक्रमण में मान्य है, और यह अभी भी अधिकांश प्रमुख ब्राउज़रों द्वारा समर्थित है। http://www.w3schools.com/TAGS/att_form_target.asp – simeonwillbanks

5

इस तरह यह बहुत आसान होना चाहिए लगता है, लेकिन यह सब जहां आप उन XLS फ़ाइलें डाल रहे हैं पर निर्भर करता है आप पैदा कर रहे हैं यदि आप इरादा रखते हैं कि प्रतिक्रिया पोस्ट में "फ़ाइल सहेजें" संवाद — होना चाहिए, तो फ़ाइल स्वयं — है, तो आपको बस यह सुनिश्चित करना है कि "सामग्री-विस्थापन" शीर्षलेख "अनुलग्नक" पर सेट हो ", और फिर फ़ाइल सामग्री को स्ट्रीम करें।

आप फ़ाइल पैदा करते हैं और उसके चारों ओर रखने के लिए जा रहे हैं, अच्छी तरह से आप एक पहचानकर्ता के साथ कहीं न कहीं यह स्टोर करने के लिए करने जा रहे हैं। उस स्थिति में, आप केवल एक साधारण पृष्ठ के साथ जवाब देंगे जिसे "डाउनलोड" लिंक मिला है, जैसे कि उस लिंक में फ़ाइल पहचानकर्ता शामिल है। इससे या तो एक GET या POST ट्रिगर हो सकता है, और सर्वर का जवाब देगा जो जैसा मैंने ऊपर वर्णित किया है।

एक छिपे हुए वास्तव में मेरी राय में, इस में जिक्र नहीं है।

+0

प्रतिक्रिया के लिए बहुत बहुत धन्यवाद। आदर्श रूप से मैं उन्हें चारों ओर नहीं रखूंगा, और सिर्फ उपयोगकर्ता को "फ़ाइल सहेजें" संवाद से लिंक करूंगा। हालांकि, अगर मैं ऐसा करता हूं, तो मुझे पहले अपने क्लाइंट से डेटा पोस्ट करना होगा और उस डेटा से फ़ाइल जेनरेट करना होगा, और उन्हें वापस लिंक करना होगा ... ऐसा लगता है कि यह मुझे सर्वर पर इसे एक बार रखने के लिए मजबूर कर देगा उत्पन्न। परिपत्र तर्क, मुझे पता है :) – Trafalmadorian