2010-02-04 35 views
25

Nếu tôi tải lên tệp văn bản qua biểu mẫu, có thể xuất nội dung của nó trực tiếp từ biến $ _FILES thay vì lưu nó vào máy chủ trước không? Tôi biết đây là một nguy cơ bảo mật, nhưng nó sẽ chỉ chạy trên một máy cục bộ.PHP được đọc từ tệp văn bản đã tải lên?

Bất kỳ lời khuyên nào được đánh giá cao.

Cảm ơn.

Trả lời

41

Tệp được lưu vào thư mục tạm thời thời điểm tệp được tải lên nhưng bạn có thể sử dụng $_FILES['uploadedfile']['tmp_name'] để đọc tệp mà không phải lưu ở nơi cố định.

+0

Doh, tôi đã làm tất cả điều này, nhưng HTML không có gì hiển thị trên trang. Tôi đang sử dụng chrome, vì vậy khi tôi nhấp vào xem nguồn, nó cho tôi thấy một phiên bản nạp lại của trang, nơi tập tin văn bản đã không được nạp :) – Dan

4

Thật không may, không. Ít nhất không phải thông qua biến $ _FILES. Lấy làm tiếc.

EDIT: Nó luôn được lưu dưới dạng tệp tạm thời trong $ _FILES và bạn sẽ luôn phải sử dụng tệp đó cho nội dung.

+2

Được rồi, tốt, tôi sẽ không đăng khi tôi biết câu trả lời là tin xấu! – Teekin

+0

Câu trả lời này là đúng bởi vì câu hỏi được hỏi cụ thể về biến $ _FILES nhưng tôi nghĩ các câu trả lời khác là chính xác cho những gì bài đăng dường như yêu cầu! – Lukos

63

Làm

file_get_contents($_FILES['uploadedfile']['tmp_name']); 

là tuy nhiên giá trị bạn cũng nên kiểm tra để đảm bảo rằng các tập tin được tải lên thông qua một hình thức và rằng không có lỗi xảy ra trong quá trình tải lên:

if ($_FILES['uploadedfile']['error'] == UPLOAD_ERR_OK    //checks for errors 
     && is_uploaded_file($_FILES['uploadedfile']['tmp_name'])) { //checks that file is uploaded 
    echo file_get_contents($_FILES['uploadedfile']['tmp_name']); 
} 

Một liên kết hữu ích là http://us2.php.net/manual/en/features.file-upload.php

+1

Xin chào, tại sao tôi nên kiểm tra tệp qua is_uploaded_file? Có vấn đề bảo mật nào không? Vấn đề gì nó có thể gây ra? Bạn có thể giải thích cho tôi hoặc cung cấp một số liên kết để đăng không? Cảm ơn bạn – Facedown

Các vấn đề liên quan