Hướng dẫn php download txt file - php tải xuống tệp txt

3

Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.
Learn more.

$file = fopen("test.txt", "w") or die("Unable to open file!");
fwrite($file, "lorem ipsum");
fclose($file);

header("Content-Disposition: attachment; filename=\"" . basename($file) . "\"");
header("Content-Type: application/force-download");
header("Content-Length: " . filesize($file));
header("Connection: close");

Tệp được tạo/mở và viết nhưng nó không được tải xuống.

Bất kỳ trợ giúp?

Hỏi ngày 19 tháng 9 năm 2018 lúc 16:37Sep 19, 2018 at 16:37

3

Cách chính xác để làm điều đó là:

<?php

$file = "test.txt";
$txt = fopen($file, "w") or die("Unable to open file!");
fwrite($txt, "lorem ipsum");
fclose($txt);

header('Content-Description: File Transfer');
header('Content-Disposition: attachment; filename='.basename($file));
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize($file));
header("Content-Type: text/plain");
readfile($file);

?>

Đã trả lời ngày 19 tháng 9 năm 2018 lúc 16:48Sep 19, 2018 at 16:48

Hướng dẫn php download txt file - php tải xuống tệp txt

ICECUBICECUBicecub

8.3916 Huy hiệu vàng41 Huy hiệu bạc68 Huy hiệu Đồng6 gold badges41 silver badges68 bronze badges

4

Bạn cần xuất ra một cái gì đó để cho người dùng tải xuống một tệp. Thử mã này:

$file = fopen("test.txt", "w") or die("Unable to open file!");
fwrite($file, "lorem ipsum");
fclose($file);

header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="FILENAME"');
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
header('Content-Length: test.txt');
ob_clean();
flush();
readfile('text.txt');
exit();

Thay đổi FILENAME với tên của tệp bạn muốn người dùng tải xuống.

Đã trả lời ngày 19 tháng 9 năm 2018 lúc 16:48Sep 19, 2018 at 16:48

Hướng dẫn php download txt file - php tải xuống tệp txt

ICECUBICECUBAlberto

8.3916 Huy hiệu vàng41 Huy hiệu bạc68 Huy hiệu Đồng13 silver badges23 bronze badges

Bạn cần xuất ra một cái gì đó để cho người dùng tải xuống một tệp. Thử mã này:output it's contents to browser, for example with fpassthru, as you use file handler:

$path = "test.txt";
$file = fopen($path, "w") or die("Unable to open file!");
fwrite($file, "lorem ipsum");
//fclose($file); // do not close the file
rewind($file);   // reset file pointer so as output file from the beginning

// `basename` and `filesize` accept path to file, not file descriptor
header("Content-Disposition: attachment; filename=\"" . basename($path) . "\"");
header("Content-Type: application/force-download");
header("Content-Length: " . filesize($path));
header("Connection: close");
fpassthru($file);
exit();

Thay đổi FILENAME với tên của tệp bạn muốn người dùng tải xuống.Sep 19, 2018 at 16:49

u_mulderu_mulderu_mulder

Albertoalberto5 gold badges47 silver badges60 bronze badges

0

67613 Huy hiệu bạc23 Huy hiệu đồng

<?PHP

//config
$namefile = "test.txt";
$content = "lorem ipsum";

//save file
$file = fopen($namefile, "w") or die("Unable to open file!");
fwrite($file, $content);
fclose($file);

//header download
header("Content-Disposition: attachment; filename=\"" . $namefile . "\"");
header("Content-Type: application/force-download");
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header("Content-Type: text/plain");

echo $content;

Sau khi bạn tạo một tệp, bạn nên xuất nội dung của nó vào trình duyệt, ví dụ với fpassthru, khi bạn sử dụng trình xử lý tệp:

Đã trả lời ngày 19 tháng 9 năm 2018 lúc 16:49Sep 19, 2018 at 17:08

Hướng dẫn php download txt file - php tải xuống tệp txt

  • 53.5K5 Huy hiệu vàng47 Huy hiệu bạc60 Huy hiệu Đồng
  • Phát triển web
  • PHP
  • Download tệp tin trong PHP

Hướng dẫn tạo hàm download file (tệp tin) bằng lập trình PHP

Hôm nay mình gặp một bài toán về PHP đó là: Khi thành viên thực hiện việc download file xong, thì mình có lưu lại log và giờ mình muốn dùng log đó để thành viên có thể tải lại file bất cứ lúc nào khi muốn.

Thông thường, khi chúng ta tạo chức năng download một file hình ảnh ( gif, png, jpg etc. ) hoặc file có đuôi.csv,.pdf hoặc.php thì chúng sẽ được mở trong trình duyệt với tab hay cửa sổ mới mà không xuất hiện hộp thoại download..csv,.pdf hoặc.php thì chúng sẽ được mở trong trình duyệt với tab hay cửa sổ mới mà không xuất hiện hộp thoại download.

Làm như sau:

Trong bài viết này, mình sẽ chia sẻ cho các bạn một đoạn code bằng PHP, giúp cho các bạn có thể ép những file mà mình nêu bên trên có thể download được chỉ bằng việc click vào nó mà không cần phải hiển thị ở một tab hay cửa sổ mới trên trình duyệt.

Giả sử các bạn tạo một file mới với tên gọi là function.php, sau đó các bạn cần copy đoạn code sau và dán vào bên trong nófunction.php, sau đó các bạn cần copy đoạn code sau và dán vào bên trong nó

Ví dụ

<?php
function output_file($source_file, $download_name, $mime_type='')
{
/*
$source_file = đường dẫn đến file cần tải
$download_name = tên file mà trình duyệt nhận được để lưu lại
$mime_type = Định dạng MIME của file (Tùy chọn)
*/
if(!is_readable($source_file)) die('Không tìm thấy tệp hoặc không thể truy cập!');
$size = filesize($source_file);
$download_name = rawurldecode($download_name);
/* Chỉ ra loại MIME (nếu không được chỉ định) */
$known_mime_types=array(
    "pdf" => "application/pdf",
    "csv" => "application/csv",
    "txt" => "text/plain",
    "html" => "text/html",
    "htm" => "text/html",
    "exe" => "application/octet-stream",
    "zip" => "application/zip",
    "doc" => "application/msword",
    "xls" => "application/vnd.ms-excel",
    "ppt" => "application/vnd.ms-powerpoint",
    "gif" => "image/gif",
    "png" => "image/png",
    "jpeg"=> "image/jpg",
    "jpg" =>  "image/jpg",
    "php" => "text/plain"
);
if($mime_type==''){
     $file_extension = strtolower(substr(strrchr($source_file,"."),1));
     if(array_key_exists($file_extension, $known_mime_types)){
        $mime_type=$known_mime_types[$file_extension];
     } else {
        $mime_type="application/force-download";
     };
};
@ob_end_clean(); //Tắt bộ đệm đầu ra để giảm mức sử dụng Máy chủ
// if IE, otherwise Content-Disposition ignored
if(ini_get('zlib.output_compression'))
  ini_set('zlib.output_compression', 'Off');
header('Content-Type: ' . $mime_type);
header('Content-Disposition: attachment; filename="'.$download_name.'"');
header("Content-Transfer-Encoding: binary");
header('Accept-Ranges: bytes');
header("Cache-control: private");
header('Pragma: private');
header("Expires: Thu, 26 May 2021 05:00:00 GMT");
// Hỗ trợ tải xuống nhiều phần và tải xuống
if(isset($_SERVER['HTTP_RANGE']))
{
    list($a, $range) = explode("=",$_SERVER['HTTP_RANGE'],2);
    list($range) = explode(",",$range,2);
    list($range, $range_end) = explode("-", $range);
    $range=intval($range);
    if(!$range_end) {
        $range_end=$size-1;
    } else {
        $range_end=intval($range_end);
    }
    $new_length = $range_end-$range+1;
    header("HTTP/1.1 206 Partial Content");
    header("Content-Length: $new_length");
    header("Content-Range: bytes $range-$range_end/$size");
} else {
    $new_length=$size;
    header("Content-Length: ".$size);
}
/* Xuất tệp tin */
$chunksize = 1*(1024*1024); //you may want to change this
$bytes_send = 0;
if ($source_file = fopen($source_file, 'r'))
{
    if(isset($_SERVER['HTTP_RANGE']))
    fseek($source_file, $range);
    while(!feof($source_file) &&
        (!connection_aborted()) &&
        ($bytes_send < $new_length)
          )
    {
        $buffer = fread($source_file, $chunksize);
        print($buffer); //echo($buffer); // is also possible
        flush();
        $bytes_send += strlen($buffer);
    }
fclose($source_file);
} else die('Lỗi - không thể mở tệp.');
die();
}
?>

Cách sử dụng :

Ví dụ

<?php
include("function.php");
set_time_limit(0);
$file_path="ten_file.pdf";
output_file($file_path, 'ten_file.pdf', 'application/pdf');
?>

Cách sử dụng :output_file là xong.

Trong đoạn code trên, mỗi khi cần “ép” download file nào, thì các bạn chỉ việc thay đổi giá trị của biến$file_path và tham số thứ 2 của hàm output_file là xong.

Chúc các bạn thành công !

Bài viết này đã giúp ích cho bạn?