PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Làm thế nào để nhận dạng tệp văn bản từ máy tính linux của tôi thông qua mã django mà không cần kiểm tra phần mở rộng và kích thước tệp của nó?

Bạn có thể muốn phát hiện kiểu MIME của tệp tải lên bất kể phần mở rộng tệp là gì và điều đó thường được thực hiện bằng cách đọc tiêu đề tệp để phát hiện "số ma thuật" hoặc các mẫu bit khác cho biết bản chất thực của tệp. Thường thì các tệp văn bản là dạng chữ hoa, không có tiêu đề nào được phát hiện và x byte đầu tiên là ASCII hoặc Unicode có thể in được.

Mặc dù đó là một chút khó khăn để đi sâu vào, nhưng có một vài thư viện Python sẽ làm điều đó cho bạn. Ví dụ: https://github.com/ahupp/python-magic sẽ phù hợp với nhu cầu của bạn bằng cách chỉ cần suy ra kiểu kịch câm cho mỗi nội dung tệp, sau đó bạn sẽ so khớp với kiểu bạn muốn chấp nhận.

Bạn có thể tìm thấy một bộ mã mẫu có liên quan cụ thể cho nhu cầu của bạn tại đây: https://stackoverflow.com / a / 28306825/7341881

Chỉnh sửa:Giải pháp của Eddie là chức năng tương đương; python-magic bao bọc libmagic, là thứ mà lệnh "tệp" gốc của Linux khai thác vào. Nếu bạn quyết định đi theo con đường xử lý con, hãy cẩn thận hơn nữa là bạn không tạo ra lỗ hổng bảo mật bằng cách khử trùng đầu vào của người dùng không đúng cách (ví dụ:tên tệp được cung cấp của người dùng). Điều này có thể dẫn đến một cuộc tấn công cấp quyền truy cập tùy ý vào môi trường thời gian chạy của máy chủ của bạn.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Đánh đổi khi triển khai ở chế độ chờ nóng

  2. Truy vấn trả về số hàng chính xác

  3. node-postgres gặp lỗi kết nối ECONNREFUSED

  4. Làm cách nào để thêm khóa chính tự động tăng dần vào bảng hiện có, trong PostgreSQL?

  5. lưu trữ các chuỗi có độ dài tùy ý trong Postgresql