PHP के साथ फ़ाइल डाउनलोड को कैसे मजबूर करें


Answers

header("Content-Type: application/octet-stream");
header("Content-Transfer-Encoding: Binary");
header("Content-disposition: attachment; filename=\"file.exe\""); 
echo readfile($url);

सही है

या exe प्रकार की फाइलों के लिए बेहतर एक

header("Location: $url");
Question

मैं PHP पर वेब पेज पर जाने वाले उपयोगकर्ता पर फ़ाइल डाउनलोड करने की आवश्यकता चाहता हूं। मुझे लगता है कि इसमें file_get_contents साथ कुछ करना है, लेकिन मुझे यकीन नहीं है कि इसे कैसे निष्पादित किया जाए।

$url = "http://example.com/go.exe";

header(location) साथ फ़ाइल डाउनलोड करने के बाद यह किसी अन्य पृष्ठ पर रीडायरेक्ट नहीं कर रहा है। यह बस बंद हो जाता है।




ऊपर दिए गए स्वीकृत उत्तर का एक संशोधन, जो रनटाइम में एमआईएमई प्रकार का भी पता लगाता है:

$finfo = finfo_open(FILEINFO_MIME_TYPE);
header('Content-Type: '.finfo_file($finfo, $path));

$finfo = finfo_open(FILEINFO_MIME_ENCODING);
header('Content-Transfer-Encoding: '.finfo_file($finfo, $path)); 

header('Content-disposition: attachment; filename="'.basename($path).'"'); 
readfile($path); // do the double-download-dance (dirty but worky)



यदि आपको अनुमति वाली स्मृति सीमा ( memory_limit ini सेटिंग) से बड़े आकार के साथ फ़ाइल डाउनलोड करना है, जो PHP Fatal error: Allowed memory size of 5242880 bytes exhausted कारण बनता है PHP Fatal error: Allowed memory size of 5242880 bytes exhausted है, तो आप यह कर सकते हैं:

// File to download.
$file = '/path/to/file';

// Maximum size of chunks (in bytes).
$maxRead = 1 * 1024 * 1024; // 1MB

// Give a nice name to your download.
$fileName = 'download_file.txt';

// Open a file in read mode.
$fh = fopen($file, 'r');

// These headers will force download on browser,
// and set the custom file name for the download, respectively.
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="' . $fileName . '"');

// Run this until we have read the whole file.
// feof (eof means "end of file") returns `true` when the handler
// has reached the end of file.
while (!feof($fh)) {
    // Read and output the next chunk.
    echo fread($fh, $maxRead);

    // Flush the output buffer to free memory.
    ob_flush();
}

// Exit to make sure not to output anything else.
exit;



इसे इस्तेमाल करे:

header('Content-type: audio/mp3'); 
header('Content-disposition: attachment; 
filename=“'.$trackname'”');                             
readfile('folder name /'.$trackname);          
exit();



Links