2013-02-19 54 views
10

Tôi cần trích xuất nội dung tải lên từ http-tệp. Làm thế nào có thể làm điều đó? Trước hết, phương thức yêu cầu sẽ là POST. Thứ hai, sẽ có trường tiêu đề Kiểu-Nội dung. Tôi không muốn trích xuất dữ liệu dạng hình thức, nhưng tải lên như các phần đính kèm thư.Giá trị loại nội dung trong yêu cầu HTTP khi tải lên nội dung?

+0

Những gì tôi đã nhận thấy: Mime-Type thường là 'multipart/form-data;' Nhưng tôi thực sự không có bất kỳ kinh nghiệm nào do điều này. Tôi không hiểu tại sao câu hỏi này lại bị bỏ phiếu. – user1826831

Trả lời

16

Loại nội dung là per specificationmultipart/form-data.

Đây là loại nội dung đặc biệt có thể được hiển thị dưới dạng nhiều yêu cầu phụ trong một yêu cầu lớn. Mỗi yêu cầu phụ (một phần tử dữ liệu biểu mẫu) có bộ tiêu đề riêng của chúng. Loại nội dung của dữ liệu thực tế nằm trong đó.

Dưới đây là một ví dụ như thế nào cho nó trông giống như với 1 lĩnh vực bình thường và 1 sân tập tin (về HTML, khi sử dụng <input name="textfield"><input type="file" name="filefield">):

Content-Type: multipart/form-data;boundary=SOME_BOUNDARY 

--SOME_BOUNDARY 
content-disposition: form-data;name="textfield" 
content-type: text/plain;charset=UTF-8 

value of textfield here 
--SOME_BOUNDARY 
content-disposition: form-data;name="filefield";filename="some.ext" 
content-type: application/octet-stream 

binary file content here 

--SOME_BOUNDARY-- 

Như để phân tích và giải nén dữ liệu này, hầu như tất cả các ngôn ngữ lập trình có BUILTIN/API của bên thứ ba cho việc này. Như bạn đã không nói bất cứ điều gì về một trong những bạn đang sử dụng, nó không thể đưa ra một câu trả lời được nhắm mục tiêu. Trong trường hợp ví dụ Java, đó sẽ là thư viện của bên thứ ba Apache Commons FileUpload hoặc khi bạn đang sử dụng Servlet 3.0, phương thức API được cung cấp request.getPart().

+0

Tôi đang sử dụng C# để nhận ra điều này. Tôi đã có thông tin được lưu trữ trong một mảng byte. – user1826831

0

Nếu (và tôi không có nghĩa là nói điều này là đúng cách), bạn chỉ muốn lưu dữ liệu từ một mảng byte, bạn nên xem xét làm thế nào để đọc nội dung POST tại địa chỉ: Reading POST body with bottle.py Đọc dữ liệu và sau đó tạo một tập tin mới nên làm các trick.

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