Tôi đã nghĩ đến việc làm một yêu cầu đầu với cURL, đã tự hỏi nếu đây là con đường để đi?Cách dễ nhất để lấy các tập tin của tập tin từ xa trong PHP?
Trả lời
Có. Vì tệp ở xa, bạn hoàn toàn phụ thuộc vào giá trị của tiêu đề Content-Length
(trừ khi bạn muốn tải xuống toàn bộ tệp). Bạn sẽ muốn curl_setopt($ch, CURLOPT_NOBODY, true)
và curl_setopt($ch, CURLOPT_HEADER, true)
.
Tôi đoán sử dụng curl để gửi yêu cầu HEAD là một khả năng tốt đẹp; một cái gì đó như thế này có lẽ sẽ làm:
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://sstatic.net/so/img/logo.png');
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_NOBODY, true);
curl_exec($ch);
$size = curl_getinfo($ch, CURLINFO_CONTENT_LENGTH_DOWNLOAD);
var_dump($size);
Và sẽ giúp bạn:
float 3438
Bằng cách này, bạn đang sử dụng một yêu cầu HEAD, và không phải tải về toàn bộ tập tin - vẫn còn, bạn phụ thuộc vào máy chủ từ xa gửi tiêu đề Độ dài nội dung chính xác.
Một tùy chọn khác bạn có thể suy nghĩ về sẽ được sử dụng filesize
... Nhưng này sẽ thất bại: tài liệu khẳng định (trích dẫn):
Tính đến PHP 5.0.0, đây chức năng có thể cũng được sử dụng với một số trình bao bọc URL. Hãy tham khảo List of Supported Protocols/Wrappers để biết danh sách trong đó trình bao bọc hỗ trợ stat() họat động chức năng.
Và, thật không may, với HTTP and HTTPS wrappers, stat()
không được hỗ trợ ...
Nếu bạn cố gắng, bạn sẽ nhận được một lỗi, như thế này:
Warning: filesize() [function.filesize]: stat failed
for http://sstatic.net/so/img/logo.png
:-(Quá xấu
Sử dụng yêu cầu HEAD và kiểm tra Content-Length
là cách tiêu chuẩn để thực hiện điều đó, nhưng bạn không thể dựa vào nó nói chung, vì máy chủ có thể không hỗ trợ.Tiêu đềlà tùy chọn và hơn nữa máy chủ có thể thậm chí không triển khai phương thức HEAD. Nếu bạn biết bạn đang thăm dò máy chủ nào, thì bạn có thể kiểm tra xem nó có hoạt động hay không, nhưng như một giải pháp chung, nó không phải là bằng chứng đạn.
Nếu bạn không cần một giải pháp chống đạn, bạn có thể chỉ cần làm:
strlen(file_get_contents($url));
Thao tác này sẽ hoạt động, nhưng nó cũng sẽ tải xuống tệp trước. Có lẽ, anh ta muốn biết kích thước trước khi lấy nó qua mạng. – troelskn
Giải pháp tốt nhất mà theo nguyên tắc KISS
$head = array_change_key_case(get_headers("http://example.com/file.ext", TRUE));
$filesize = $head['content-length'];
Đến nay câu trả lời tốt nhất. Thực hiện tốt. –
Lệnh này không trả lại một khóa 'chiều dài nội dung' cho tôi, đây là mảng nó trả về: ''kết nối' => chuỗi 'đóng' (length = 5) 'date' => string 'Tuệ, 03 Jun 2014 20:55:55 GMT '(length = 29) ' server '=> chuỗi' Microsoft-IIS/6.0 '(chiều dài = 17) ' x-powered-by '=> chuỗi' ASP.NET '(length = 7) ' x-aspnet-phiên bản '=> chuỗi' 4.0.30319 '(length = 9) ' bộ nhớ cache kiểm soát '=> chuỗi' riêng tư '(length = 7) ' loại nội dung '=> string' image/gif'' –
Câu hỏi nhanh, tại sao nó cần array_change_key_case? – mario
- 1. Lấy phiên bản mới nhất của tập tin từ TFS
- 2. Tải tập tin từ xa vào grails
- 3. Truyền tập tin từ xa vào các đối tượng tập tin
- 4. PHP: Đọc từ điểm nhất định trong tập tin
- 5. Tìm kiếm trong tập tin trên trang FTP từ xa
- 6. Lấy tập tin mới nhất Ngày cam kết từ SVN
- 7. Không thể lấy các tập tin từ send_from_directory() trong bình
- 8. Lấy danh sách tập tin từ TFS
- 9. Cách đọc nội dung tập tin từ một tập tin?
- 10. Lấy một tập tin từ kho chứa thủy ngân từ xa
- 11. Đọc tập tin văn bản từ xa trong android
- 12. Lấy nội dung tập tin trong tập lệnh java
- 13. Cách lấy tập tin được sửa đổi gần đây nhất
- 14. Viết một tập tin .htaccess trong PHP?
- 15. Tiện ích tập tin trong php?
- 16. tạo tập tin ini, viết các giá trị trong PHP
- 17. Lấy tên tập tin từ thư mục trong Android
- 18. Làm thế nào để bảo vệ tên tập tin từ xa khi tải về một tập tin sử dụng curl
- 19. AVURLKhông thể tải bằng tập tin từ xa
- 20. Mở tập tin và đọc từ tập tin Objective-c
- 21. Cách đọc tập tin hiệu quả nhất
- 22. Lấy tên sản phẩm từ tập tin msi trong C#
- 23. Đọc từ tập tin
- 24. PHP Find String trong tập tin CSV
- 25. Matching tập tin gần nhất trong trao chữ ASCII tập tin
- 26. Bash Script: đếm các dòng duy nhất trong tập tin
- 27. tập tin lớp học để chuyển đổi tập tin java
- 28. PHP dừng đọc tập tin từ xa khi sau khi được tải xuống đầy đủ
- 29. số Tính của tập tin trong thư mục trong php
- 30. cách tốt nhất để sửa csv tập tin
có, với điều này: http: // php. net/manual/en/function.get-headers.php – Merlinox