2013-10-31 11 views
7

Tôi hiện đang mã hóa hai lớp: HttpRequest và HttpResponse. Tôi muốn mã các lớp HTTP của riêng mình.php http yêu cầu nội dung dữ liệu thô enctype = multipart/form-data

Tôi đang gặp sự cố với phương thức POST bằng biểu mẫu có enctype = multipart/form-data: Tôi không thể nhận được nội dung yêu cầu.

Sau một nghiên cứu dài và tìm kiếm, tôi thấy mình phải sử dụng file_get_contents("php://input") để nhận nội dung yêu cầu. Khi tôi kiểm tra nó, tôi có một chuỗi rỗng var_dump(file_get_contents("php://input")).

Tôi không có quyền truy cập vào cấu hình máy chủ/php.

Tôi đang thử nghiệm với đoạn mã sau:

<?php 
$input = file_get_contents('php://input'); 
var_dump($input); 
?> 
<html> 
<body> 
<form action="./" method="post" enctype="multipart/form-data"> 
    <label for="file">Filename:</label> 
    <input type="text" name="namen" id="nameid" /><br/> 
    <input type="file" name="file" id="file"><br> 
    <input type="file" name="file2" id="file2"><br> 
    <input type="submit" name="submit" value="Submit"> 
</form> 
</body> 
</html> 

Và sau khi nộp, tôi có kết quả này: string(0) "". Điều này hiển nhiên vì php: // input không hoạt động với các biểu mẫu enctype = "multipart/form-data".

Tôi muốn có một cái gì đó như:

-----------------------------19972703421793859182225487886 
Content-Disposition: form-data; name="namen" 

ds 
-----------------------------19972703421793859182225487886 
Content-Disposition: form-data; name="file"; filename="toto.xml" 
Content-Type: text/xml 

<?xml version="1.0" encoding="UTF-8"?> 
<Toto></Toto> 

-----------------------------19972703421793859182225487886 
Content-Disposition: form-data; name="file2"; filename="" 
Content-Type: application/octet-stream 


-----------------------------19972703421793859182225487886 
Content-Disposition: form-data; name="submit" 

Submit 
-----------------------------19972703421793859182225487886-- 

phải là một cách nó hoạt động đối với bất kỳ phương thức yêu cầu? Hoặc là tôi sai ?

Trả lời

6

Tôi sẽ tìm một điều hiển nhiên ở đây: tại sao thậm chí còn bận tâm khi cố gắng phân tích cú pháp này? Dữ liệu nằm trong phạm vi của bạn với việc sử dụng dễ dàng $ _POST []/$ _FILES [] ..

Bạn vẫn có thể tạo lớp của riêng mình xung quanh các giá trị đó thay vì yêu cầu các lớp của riêng bạn cố gắng thực hiện cùng một mảng dữ liệu trình biên dịch php đã làm cho bạn.

Để cung cấp cho bạn câu trả lời hợp lệ: Tôi không biết cách lấy lại php: // của bạn, vì nó có thể được trình biên dịch PHP đọc và do đó bạn đang ở cuối luồng (Plus: nó là chỉ đọc để có lẽ không có cách nào để thiết lập lại con trỏ để bắt đầu của dòng).

+2

Tôi chỉ muốn nói: Tôi ngu ngốc. Cảm ơn ;) – RaphyTheGeek

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