CURL을 사용하여 파일 내용 게시


15

(다음은 배경입니다. 원하는 경우 "질문 :"으로 넘어갈 수 있습니다.)

입력 한 텍스트 (Python 코드 일 것으로 예상 됨)를 승인 한 다음 토큰 화 된 응답을 제공 하는 웹 사이트 가 있습니다. 우리가 작성하는 Python lexers의 참조로 사용됩니다. 테스트 프로세스를 자동화하고 브라우저를 열거 나 텍스트를 앞뒤로 복사하지 않고 코드를 확인할 수 있도록 노력하고 있습니다. 다음은 내가하려는 일입니다.

"x.py"라는 샘플 파이썬 파일이 있는데 해당 양식을 작성한 것처럼 서버에 게시하고 싶습니다. 난 노력 했어:

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

그러나 불행히도 분명히 "@x.py"내 파일 내용으로 게시되어 있기 때문에 제대로 작동하지 않습니다 (즉, "file=@x.py"게시되지 않은 것입니다 "file=<contents-of-x.py>"). 나는 해봤 --form하고 --data있지만, 그 중 하나 일을하지 않았습니다.

질문 : 특히 URL로 인코딩되지 않은 내용을 가진 파일이 있고이 파일의 내용이 POST의 일부이고 특정 이름 (이 경우 file) 과 관련이 있어야하는 경우 이를 수행하는 올바른 방법은 무엇입니까 ?



왜 답변으로 게시하지 않습니까? 당신은 당신의 자신의 질문에 대답하고 ~ 2 일 또는 당신이 그것을 받아 들일 수있는 것 (어떻게 오래 있는지)에 대답 할 수 있습니다.
BenjiWiebe

@ BenjiWiebe : 알겠습니다. 게시하겠습니다.
Cornstalks

답변:


25

당신이 원하는 것은 "file@x.py"(아니오 =)입니다.

로부터 curl :

name @ filename 이렇게하면 주어진 파일 (줄 바꿈 포함)에서 데이터를 컬로드하고 해당 데이터를 URL 인코딩하여 POST에 전달합니다. 이름 부분에 등호가 추가되어 name = urlencoded-file-content가됩니다. 이름은 이미 URL 인코딩되어 있어야합니다.


2

나는 qmega의 대답을 받아 들인 대답으로 남겨 둘 것이지만, 쉽게 읽을 수 있도록 여기에 의견을 남겼습니다. 이를 수행하는 다른 방법 중 하나는 단순히을 지정하는 것 "file=`cat x.py`"입니다. 전체 명령의 경우 다음과 같습니다.

curl --data-urlencode "file=`cat x.py`" http://matt.might.net/apps/pylex/pylex.php
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.