मुझे ऐसी समस्या मिली है जो SO पर कई बार बढ़ी है, लेकिन मुझे मेरा समाधान नहीं मिल रहा है! मैं ब्राउज़र में खोलने के बिना क्लाइंट को पीडीएफ फ़ाइल वितरित करने की कोशिश कर रहा हूं, फ़ाइल डाउनलोड करता है लेकिन जब मैं इसे खोलता हूं तो यह दूषित होता है और मूल फ़ाइल से कुछ बाइट गायब है। मैंने फ़ाइल डाउनलोड करने के लिए कई ऐसी विधियों का प्रयास किया है, लेकिन मैं आपको केवल नवीनतम दिखाऊंगा जो मैंने उपयोग किया है और उम्मीद है कि कुछ फीडबैक प्राप्त करें।फोर्स पीडीएफ फ़ाइल डाउनलोड करना, दूषित फ़ाइल
मैंने एक टेक्स्ट एडिटर में डाउनलोड पीडीएफ भी खोला है और इसके शीर्ष पर कोई PHP त्रुटि नहीं है जो मैं देख सकता हूं!
मुझे यह भी पता है कि readfile() बहुत तेज है लेकिन परीक्षण उद्देश्यों के लिए मैं कुछ भी काम करने के लिए बेताब हूं इसलिए मैंने थोड़ी देर (! Feof()) दृष्टिकोण का उपयोग किया!
वैसे भी पर्याप्त पर्यटन, यहाँ कोड (why my downloaded file is alwayes damaged or corrupted? से लिया गया):
$file = __DIR__ . '/reports/somepdf.pdf';
$basename = basename($file);
$length = sprintf("%u", filesize($file));
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="' . $basename . '"');
header('Content-Transfer-Encoding: binary');
header('Connection: Keep-Alive');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
header('Content-Length: ' . $length);
ob_clean();
set_time_limit(0);
readfile($file);
यह भी ध्यान रखें करने के लिए फ़ाइल आकार में अंतर नहीं था:
Original: 351,873 bytes
Downloaded: 329,163 bytes
आप ('readfile का प्रयास किया था)'? – barbashov
@ डेविडसी 7 9 9: यदि आप पिछले प्रश्नों के उत्तर पर चर्चा करना चाहते हैं, तो कृपया वहां एक टिप्पणी छोड़ दें। यहां कुछ कोड न छोड़ें और हमें बताएं "यह काम नहीं करता है"। ध्यान रखें, केवल किसी और ने उस उत्तर को स्वीकार कर लिया है, इसका मतलब यह नहीं होना चाहिए कि कोड भी आपके लिए काम करना चाहिए। और परीक्षण उद्देश्यों के लिए, कृपया समस्या को उत्तेजित करने के लिए न्यूनतम को कम से कम कोड को कम करें। जैसे कोई फंक्शन नहीं, बस एक हार्डकोडेड फ़ाइल नाम। Readfile का प्रयोग करें। – hakre
@barbashov हाँ मैंने कई अलग-अलग तरीकों की कोशिश की है। – DavidC799