Hướng dẫn upload file to python http server - tải tệp lên máy chủ python http

HTTP.Server của Python được mở rộng để bao gồm một trang tải lên tệp

Hướng dẫn upload file to python http server - tải tệp lên máy chủ python http

Cài đặt

python3 -m pip install --user uploadserver

Cách sử dụng

python3 -m uploadserver

Chấp nhận các tùy chọn tương tự như http.server, cộng với một vài tính năng bổ sung (được ghi lại bên dưới).

Sau khi máy chủ bắt đầu, trang tải lên đã hoạt động /tải lên. Ví dụ: nếu máy chủ đang chạy tại http: // localhost: 8000/đi đến http: // localhost: 8000/tải lên.

Cảnh báo: Đây là một máy chủ tải lên và chạy nó sẽ cho phép tải lên. Các tệp được tải lên sẽ thay thế các tệp hiện có với cùng tên.

Bây giờ hỗ trợ tải lên nhiều tệp cùng một lúc! Chọn nhiều tệp trong bộ chọn tệp của trang web hoặc tải lên với Curl:

curl -X POST http://127.0.0.1:8000/upload -F '[email protected]' -F '[email protected]'

Tùy chọn mã thông báo

Chạy với một mã thông báo đơn giản.

python3 -m uploadserver -t helloworld

Bây giờ bạn có thể tải lên một tệp với mã thông báo. Ví dụ:

curl -X POST http://127.0.0.1:8000/upload -F '[email protected]' -F 'token=helloworld'

Tải lên mà không có mã thông báo sẽ bị từ chối. Mã thông báo có thể bị đánh cắp nếu được gửi trong HTTP đơn giản, vì vậy tùy chọn này được sử dụng tốt nhất với HTTPS.

Lưu ý: Máy chủ không thể kiểm tra mã thông báo cho đến khi một tệp được chuyển, do cách tải lên biểu mẫu HTML được định dạng, tạo ra lỗ hổng DOS. Nếu đây là một mối quan tâm, hãy sử dụng MTLS để xác thực khách hàng thay vì dựa vào mã thông báo.

Tùy chọn chủ đề

Trang tải lên hỗ trợ chế độ tối để hiển thị văn bản trắng trên nền đen. Nếu không có tùy chọn nào được chỉ định, bảng màu được chọn từ sở thích của Trình duyệt của máy khách (thường khớp với cài đặt hệ điều hành của họ, nếu chế độ ánh sáng hoặc tối được hỗ trợ bởi HĐH). Để thực thi chủ đề ánh sáng hoặc tối, tham số CLI --theme có thể được sử dụng:

python3 -m uploadserver --theme light

hoặc

python3 -m uploadserver --theme dark

Tùy chọn HTTPS

Chạy với HTTPS và không có xác thực máy khách:

# Generate self-signed server certificate
openssl req -x509 -out server.pem -keyout server.pem -newkey rsa:2048 -nodes -sha256 -subj '/CN=server'

# The server root should not contain the certificate, for security reasons
cd server-root
python3 -m uploadserver --server-certificate server.pem

# Connect as a client
curl -X POST https://localhost:8000/upload --insecure -F [email protected]

Chạy với HTTPS và với xác thực máy khách:

# Generate self-signed server certificate
openssl req -x509 -out server.pem -keyout server.pem -newkey rsa:2048 -nodes -sha256 -subj '/CN=server'

# Generate self-signed client certificate
openssl req -x509 -out client.pem -keyout client.pem -newkey rsa:2048 -nodes -sha256 -subj '/CN=client'

# Extract public key from self-signed client certificate
openssl x509 -in client.pem -out client.crt

# The server root should not contain the certificates, for security reasons
cd server-root
python3 -m uploadserver --server-certificate server.pem --client-certificate client.crt

# Connect as a client
curl -X POST https://localhost:8000/upload --insecure --cert client.pem -F [email protected]

Lưu ý: Điều này sử dụng chứng chỉ máy chủ tự ký mà các máy khách như trình duyệt web và Curl sẽ cảnh báo. Hầu hết các trình duyệt sẽ cho phép bạn tiến hành sau khi thêm một ngoại lệ và Curl sẽ hoạt động nếu được đưa ra tùy chọn -k/-không an toàn. Sử dụng chứng chỉ của riêng bạn từ cơ quan chứng chỉ sẽ tránh các cảnh báo này.

Phá vỡ các thay đổi trong 4.0.0

  • Theo mặc định, các tệp được tải lên có cùng tên với một tệp hiện có được đổi tên. Để khôi phục hành vi trước đó của việc ghi đè chúng, hãy vượt qua
    python3 -m uploadserver
    
    0.
  • Tải lên tệp không có tệp trong đó bị từ chối với 400 yêu cầu xấu thay vì 500 lỗi máy chủ nội bộ, với thông báo lỗi nhiều thông tin hơn.
  • Xử lý tải lên lớn đã được cải thiện. Về mặt lý thuyết, điều này không gây ra bất kỳ thay đổi phá vỡ nào, nhưng hệ thống tập tin là ma thuật đen và nên được xem với sự nghi ngờ.

Phá vỡ các thay đổi trong 3.0.0

  • Nếu
    python3 -m uploadserver
    
    1 được gọi trực tiếp, chẳng hạn như một phần mở rộng, trường
    python3 -m uploadserver
    
    2 hiện được yêu cầu trên đối tượng đối số. Thay đổi này sẽ không ảnh hưởng đến người dùng chạy mô -đun này không được sửa đổi.

Phá vỡ các thay đổi trong 2.0.0

  • Tệp tải lên bây giờ tôn trọng tùy chọn
    python3 -m uploadserver
    
    3. Không làm như vậy là một lỗi và rủi ro bảo mật (vì nó có thể đối với root máy chủ chứa chứng chỉ của máy chủ mà không cần người dùng nhận ra).
  • Tùy chọn
    python3 -m uploadserver
    
    4, nếu được cung cấp, phải được cung cấp một giá trị. Không yêu cầu một giá trị là một lỗi và rủi ro bảo mật (vì người dùng có thể chỉ định tùy chọn mã thông báo nhưng quên cung cấp mã thông báo).
  • Một số tái cấu trúc nội bộ đã được thực hiện để hỗ trợ tạo tiện ích mở rộng. Điều này không ảnh hưởng đến việc sử dụng dòng lệnh.

Phá vỡ các thay đổi trong 1.0.0

  • Trường tệp trong biểu mẫu tải lên được đổi tên từ
    python3 -m uploadserver
    
    5 đến
    python3 -m uploadserver
    
    6, để phản ánh hỗ trợ cho tải lên nhiều tệp. Các tập lệnh sử dụng Curl sẽ cần phải được nâng cấp với tên trường mới.
  • Tải lên thành công bây giờ phản hồi với 204 không có nội dung thay vì 200 OK, do đó, Curl sẽ không mặc định để in trang tải lên tại thiết bị đầu cuối.

Sự nhìn nhận

Phần lớn

python3 -m uploadserver
7 đã được sao chép từ Python's
python3 -m uploadserver
8.

Cảm ơn Lishoujun đã gửi yêu cầu kéo đầu tiên! (Đã thêm tùy chọn mã thông báo.)

Cảm ơn Nterysin vì một số cải tiến bao gồm hỗ trợ và tái cấu trúc MTL để hỗ trợ sử dụng bởi các mô -đun khác.

Cảm ơn Marvinruder vì đã làm việc trên chỉ báo tiến trình tải lên, tùy chọn chủ đề và xác thực trước các mã thông báo trước khi tải lên.

Cảm ơn Shuangye vì đã tìm ra một cách dễ dàng để xử lý các tải lên tệp lớn và cải thiện việc xử lý các vụ va chạm tên tệp.

Làm cách nào để tải tệp lên máy chủ HTTP của tôi?

Đăng nhập vào cPanel của bạn ..
Nhấp vào nút Trình quản lý tệp trong phần Tệp ..
Điều hướng đến thư mục bạn muốn tải lên một tệp và nhấp vào liên kết tải lên ở đầu trình quản lý tệp. ....
Kéo và thả tệp của bạn vào cửa sổ hoặc nhấp vào Chọn tệp để duyệt máy tính của bạn cho tệp bạn muốn tải lên ..

Làm cách nào để tải tệp lên máy chủ Python?

Phương pháp 1: Sử dụng mô-đun HĐH của Python: Ngoài ra, thuộc tính Enctype có giá trị "đa phần/dữ liệu hình thức" sẽ giúp biểu mẫu HTML tải lên tệp. Cuối cùng, chúng tôi cần thẻ đầu vào với thuộc tính tên tệp để tải lên tệp chúng tôi muốn. Cuối cùng, chúng tôi cần thẻ đầu vào với thuộc tính tên tệp để tải lên tệp chúng tôi muốn.Using the Python's os Module: Also, the enctype attribute with "multi-part/form-data" value will help the HTML form to upload a file. Lastly, we need the input tag with the filename attribute to upload the file we want. Lastly, we need the input tag with the filename attribute to upload the file we want.

Làm cách nào để tải lên một tệp lên máy chủ Apache HTTP?

Tải tập tin lên máy chủ không cần phải là vấn đề.Nhà phát triển sẽ cần tạo một thư mục có tên tải lên trong thư mục HTDOCS của máy chủ Apache để hỗ trợ thành phần tải lên tệp PHP.Thư mục này là nơi tải lên tệp HTML5 sẽ được lưu.create a folder named upload in the Apache server's htdocs directory to support the PHP file upload component. This folder is where the HTML5 file uploads will be saved.

Làm cách nào để truy cập máy chủ HTTP trong Python?

Chạy một máy chủ HTTP cục bộ đơn giản..
Cài đặt Python.....
Mở dấu nhắc lệnh của bạn (Windows) / Terminal (MacOS / Linux).....
Điều này sẽ trả về một số phiên bản.....
Nhập lệnh để khởi động máy chủ vào thư mục đó: ....
Theo mặc định, điều này sẽ chạy nội dung của thư mục trên máy chủ web cục bộ, trên cổng 8000 ..