2010-05-25 54 views
5

Tôi đang làm việc trên tập lệnh tải lên PHP và khi kiểm tra kiểm tra lỗi của mình, tôi đã cố gắng tải lên tệp TIFF 17MB. Khi tôi làm điều này, mảng $ _FILES rỗng. Kịch bản hoạt động tốt cho những gì tôi cần nó để làm, đó là để tải lên các tập tin JPEG. Giải pháp của tôi là kiểm tra xem $ _FILES có trống hay không trước khi tiếp tục với tập lệnh tải lên.

Ai có thể giải thích lý do tại sao $ _FILES trống khi TIFF được cố gắng tải lên? Là giải pháp của tôi, để kiểm tra xem $ _FILES có trống không, không sao?

Điều này có liên quan gì đến cài đặt trong php.ini không?

Chỉ cần làm rõ

Tôi đã kiểm tra rằng $_FILES trống bằng cách sử dụng sau đây:

if(empty($_FILES)) 
{ 
    die('$_FILES is empty.'); 
} 

Trả lời

7

Có, upload_max_filesize kiểm soát kích thước tải lên tối đa, có khả năng vượt quá tệp TIFF. Mặc định là 2M. Bạn có thể thử nghiệm với:

echo ini_get("upload_max_filesize"); 

EDIT: Thực ra, nguyên nhân chính xác là nhiều khả năng post_max_size, mà luôn luôn là> = upload_max_filesize: "Nếu kích thước của bài dữ liệu lớn hơn post_max_size, các _POST $ và $ _FILES superglobals rỗng."

+0

Cảm ơn! Đó là chắc chắn vì kích thước tệp TIFF vượt quá cả 'upload_max_filesize' và' post_max_size'. –

1

Bạn nên kiểm tra xem nếu $_FILES['file']['error'] bằng 0. Điều này cho thấy một "thành công".

Nếu mảng tệp của bạn trống, có thể do một số vấn đề khác, như không bao gồm mã hóa.

Hãy thử làm var_dump($_FILES) và xem nội dung ...

EDIT: Tôi biết bạn có thể thiết lập kích cỡ tối đa trong tập tin php.ini, nhưng tôi không chắc chắn nếu điều đó sẽ cung cấp cho bạn một file mảng trống. Tôi nghĩ rằng bạn sẽ chỉ nhận được một lỗi.

+0

Lời khuyên hay. Để var_dump một mảng trống –

+1

@Col - Vì anh ta nghe giống như người mới bắt đầu, nó giúp xác minh mảng thực sự trống rỗng, và rằng anh ta không xem chỉ mục sai. –

0

Như đã đăng, nó trống vì nếu không thành công. Cũng cần kiểm tra một yếu tố hình thức như thế này:

<input type="hidden" name="MAX_FILE_SIZE" value="-maxsizegoeshereinbytes-" /> 

Để có thêm chắc chắn (một khi bạn thực sự có một mảng - thêm vào 'kiểm tra phím lỗi' bưu điện, btw), bạn cũng có thể kiểm tra kích thước

if($_FILES['file']['size'] > 0) { 

} 
+0

Điều đó không đúng. Chỉ PHP chú ý đến trường MAX_FILE_SIZE. –

+0

Đã cập nhật câu trả lời - cảm ơn chi tiết đó. Mặc dù vẫn áp dụng, vì đây là php. –

+0

Câu trả lời của bạn vẫn không liên quan –

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