Đăng nội dung của tệp bằng CURL


15

(Sau đây là câu chuyện lạc hậu, bạn có thể chuyển xuống "Câu hỏi:" nếu bạn muốn)

Có một trang web cho một trong những khóa học của tôi chấp nhận văn bản đầu vào (dự kiến ​​là mã Python) và sau đó đưa ra một số phản hồi được mã hóa. Nó có nghĩa là được sử dụng như một tài liệu tham khảo cho các từ vựng Python mà chúng ta đang viết. Tôi đang cố gắng tự động hóa quy trình thử nghiệm của mình và có thể kiểm tra mã của mình mà không cần mở trình duyệt, sao chép văn bản qua lại, v.v ... Vì vậy, đây là những gì tôi đang cố gắng thực hiện:

Tôi đã có một tệp python mẫu có tên "x.py" và tôi muốn đăng nó lên máy chủ như thể tôi đã điền vào biểu mẫu đó. Tôi đã thử:

curl --data-urlencode "file=@x.py" http://matt.might.net/apps/pylex/pylex.php

Nhưng thật không may, điều đó không hoạt động đúng bởi vì rõ ràng "@x.py"là đang được đăng dưới dạng nội dung tệp của tôi (đó "file=@x.py"là những gì được đăng, không phải "file=<contents-of-x.py>"). Tôi đã thử --form--datanhững cái đó cũng không hoạt động.

Câu hỏi: Cụ thể, nếu tôi có một tệp có nội dung không được mã hóa url và nội dung của tệp này cần phải là một phần của POST và được liên kết với một tên cụ thể (trong trường hợp này file), thì cách nào để thực hiện đúng ?



Tại sao không đăng nó như là một câu trả lời? Bạn có thể trả lời câu hỏi của riêng mình, và sau đó trong 2 ngày hoặc một cái gì đó (không chắc là bao lâu) bạn có thể chấp nhận nó.
BenjiWiebe

@BenjiWiebe: Được rồi, tôi sẽ đăng nó.
Bắp ngô

Câu trả lời:


25

Những gì bạn muốn là "file@x.py"(không =).

Từ curl trang hướng dẫn :

name @ filename Điều này sẽ làm cho tải dữ liệu cuộn từ tệp đã cho (bao gồm mọi dòng mới), mã hóa URL dữ liệu đó và chuyển nó vào POST. Phần tên được thêm một dấu bằng, kết quả là name = urlencoding-file-content. Lưu ý rằng tên dự kiến ​​sẽ được mã hóa URL.


2

Tôi sẽ để câu trả lời của qmega là câu trả lời được chấp nhận, nhưng tôi sẽ đặt câu trả lời tôi để lại trong một nhận xét ở đây để dễ đọc hơn. Một cách khác để làm điều này chỉ đơn giản bằng cách chỉ định "file=`cat x.py`". Đối với lệnh đầy đủ, nó sẽ là:

curl --data-urlencode "file=`cat x.py`" http://matt.might.net/apps/pylex/pylex.php
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.