2013-06-26 26 views
13

Tôi đang cố gắng tải tệp lên máy chủ bằng cách sử dụng bình curl và python. Dưới đây tôi có mã về cách tôi đã thực hiện nó. Bất kỳ ý tưởng về những gì tôi đang làm sai.Tải tệp lên máy chủ bình python bằng cách sử dụng curl

curl -i -X PUT -F name=Test -F [email protected] "http://localhost:5000/" 

@app.route("/", methods=['POST','PUT']) 
def hello(): 
    file = request.files['Test'] 
    if file and allowed_file(file.filename): 
     filename=secure_filename(file.filename) 
     print filename 

    return "Success" 

Sau đây là lỗi mà máy chủ gửi lại

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"> 
<title>400 Bad Request</title> 
<h1>Bad Request</h1> 
<p>The browser (or proxy) sent a request that this server could not understand.</p> 

Cảm ơn trước.

+1

Mã của bạn hoạt động nếu bạn BẬT dữ liệu, ví dụ: 'curl -F" [email protected] "http: //127.0.0.1: 5000' do đó thu hẹp sự cố của bạn xuống cách bạn xử lý các yêu cầu PUT trong Flask. – Doobeh

+0

Tôi nhớ một số chủ đề nói rằng request.files không hoạt động với PUT. Bạn có thể thử request.data thay thế không? – codegeek

+0

Mã của bạn có vẻ tốt, bạn sẽ nhận được gì nếu bạn thử: curl -X PUT -F [email protected] http: // localhost: 5000 – snahor

Trả lời

14

Lệnh curl của bạn có nghĩa là bạn đang truyền hai nội dung biểu mẫu, một tệp có tên filedata và một trường biểu mẫu có tên name. Vì vậy, bạn có thể làm điều này:

file = request.files['filedata'] # gives you a FileStorage 
test = request.form['name']  # gives you the string 'Test' 

nhưng request.files['Test'] không tồn tại.

+0

làm thế nào để bạn thêm các tập tin? –

+0

@DineshVG Tôi không chắc chắn ý của bạn là gì với câu hỏi của bạn. Lệnh curl gửi một yêu cầu đăng bài với dữ liệu biểu mẫu hoặc tệp đã cho tới máy chủ nơi chúng có thể được truy cập trong tuyến đường trên đối tượng yêu cầu như được hiển thị. – mata

+0

Tôi có một trang html mà qua đó tôi - gửi yêu cầu bài đăng - bằng cách đính kèm tệp Tôi đã thử sử dụng lệnh curl, nó không hoạt động. Tôi đã tìm ra sau ... Tôi phải đưa ra hai cặp khóa-giá trị .. Một cho tên của tệp và tệp khác cho tệp đó. Và làm cho nó hoạt động .. –

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