Khi yêu cầu khách hàng cho một tập tin, tôi sử dụng mã này để gửi nó:Làm thế nào để gửi tệp đến trình duyệt để tải xuống?
public static Result download(String file) {
File file = getRealFile(file);
return Ok(file);
}
Nhưng tôi thấy trình duyệt sẽ không tải về nó, nhưng hiển thị nội dung của nó để thay thế. Tiêu đề phản hồi:
Content-Type text/plain
Transfer-Encoding chunked
Cách chính xác để gửi tệp là gì?
Cập nhật
mỗi Razvi của câu trả lời, tôi thấy một câu trả lời dường như tốt cho câu hỏi này: https://stackoverflow.com/a/1074925/342235
Nhưng sao chúng ta thực sự phải thiết lập rất nhiều tiêu đề?
header("Cache-Control: public");
header("Content-Description: File Transfer");
header("Content-Disposition: attachment; filename=$filepath");
header("Content-Type: mime/type");
header("Content-Transfer-Encoding: binary");
// UPDATE: Add the below line to show file size during download.
header('Content-Length: ' . filesize($filepath));
Tôi nghĩ play2 đã có một số phương pháp thuận tiện để làm điều này, không may mắn :) – Freewind
tôi tìm thấy một cách khác để làm điều này, không yêu cầu đặt tiêu đề một cách rõ ràng. :) – Razvi
Phần 'renderBinary' chỉ dành cho play1 :( – Freewind