2017-12-30 46 views
0

curl을 사용하여 MP4UPLOAD 서버에 비디오 (test.mp4test.mp4/C:\admin\videos\)를 업로드하는 방법을 찾고 있습니다. 나는 (파일 열기 대화 상자를 사용하여) 수동으로 업로드를 제출하면, 다음 헤더 (일부 값이 때문에 개인 정보 보호를의 변경) 업로드를 처리합니다mp4upload Curl에 대한 mulipart/form-data 요청 보내기 Curl

#(2) 
#General 
Request URL:https://www3.mp4upload.com/cgi-bin/upload.cgi?upload_type=file 
Referrer Policy:no-referrer-when-downgrade 

#Request Headers 
Content-Type:multipart/form-data; boundary=----WebKitFormBoundaryUYmnnrteTBA8i9Ps 
Origin:https://www.mp4upload.com 
Referer:https://www.mp4upload.com/?op=upload 
User-Agent:Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.84 Safari/537.36 

#Query String Parameters 
upload_type=file 

#Request Payload 
------WebKitFormBoundaryUYmnnrteTBA8i9Ps 
Content-Disposition: form-data; name="sess_id" 

12345abcde 
------WebKitFormBoundaryUYmnnrteTBA8i9Ps 
Content-Disposition: form-data; name="utype" 

reg 
------WebKitFormBoundaryUYmnnrteTBA8i9Ps 
Content-Disposition: form-data; name="file_descr" 


------WebKitFormBoundaryUYmnnrteTBA8i9Ps 
Content-Disposition: form-data; name="file_public" 

1 
------WebKitFormBoundaryUYmnnrteTBA8i9Ps 
Content-Disposition: form-data; name="link_rcpt" 


------WebKitFormBoundaryUYmnnrteTBA8i9Ps 
Content-Disposition: form-data; name="link_pass" 


------WebKitFormBoundaryUYmnnrteTBA8i9Ps 
Content-Disposition: form-data; name="to_folder" 


------WebKitFormBoundaryUYmnnrteTBA8i9Ps 
Content-Disposition: form-data; name="file_0"; filename="test.mp4" 
Content-Type: video/mp4 


------WebKitFormBoundaryUYmnnrteTBA8i9Ps-- 

을 그래서 주어진 헤더와 같은 업로드 요청을 어떻게 위의 curl/php를 사용하여 (가능하다면)?

편집

1 그래서 크롬을 사용하여, 나는 다음과 같은 컬 라인을 검색.

curl -k 'https://www13.mp4upload.com/cgi-bin/upload.cgi?upload_type=file' -H 'Referer: https://www.mp4upload.com/?op=upload' -H 'Origin: https://www.mp4upload.com' -H 'User-Agent: Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.84 Safari/537.36' -H 'Content-Type: multipart/form-data; boundary=----WebKitFormBoundarykXmBSfC4cYG13IWT' --data-binary $'------WebKitFormBoundarykXmBSfC4cYG13IWT\r\nContent-Disposition: form-data; name="sess_id"\r\n\r\n12345abcde\r\n------WebKitFormBoundarykXmBSfC4cYG13IWT\r\nContent-Disposition: form-data; name="utype"\r\n\r\nreg\r\n------WebKitFormBoundarykXmBSfC4cYG13IWT\r\nContent-Disposition: form-data; name="file_descr"\r\n\r\n\r\n------WebKitFormBoundarykXmBSfC4cYG13IWT\r\nContent-Disposition: form-data; name="file_public"\r\n\r\n1\r\n------WebKitFormBoundarykXmBSfC4cYG13IWT\r\nContent-Disposition: form-data; name="link_rcpt"\r\n\r\n\r\n------WebKitFormBoundarykXmBSfC4cYG13IWT\r\nContent-Disposition: form-data; name="link_pass"\r\n\r\n\r\n------WebKitFormBoundarykXmBSfC4cYG13IWT\r\nContent-Disposition: form-data; name="to_folder"\r\n\r\n\r\n------WebKitFormBoundarykXmBSfC4cYG13IWT\r\nContent-Disposition: form-data; name="file_0"; filename="test.mp4"\r\nContent-Type: video/mp4\r\n\r\n\r\n------WebKitFormBoundarykXmBSfC4cYG13IWT--\r\n' --compressed 

지금 제일 먼저 나는 WebKitFormBoundary 변경에 임의의 문자열 매번 새로운 요청을 제출 것으로 나타났습니다. 하지만 임의의 문자열 뒤에 어떤 의미가 있습니까? 아니면 그냥 임의의 문자열을 직접 만들 수 있습니까?
두 번째 것은 test.mp4 파일이 C:\admin\videos\이라는 것을 알 수없는 것입니다. 해당 디렉토리에서 파일을 업로드하도록 지정하려면 어떻게해야합니까? 2

편집은 그래서 -F를 사용하여 폼 데이터를 게시하는 다른 방법을 발견했다. 이렇게하면 내 계정으로도 동영상을 업로드 할 수 있습니다 (sess_id 사용).

curl -X POST -F "sess_id=1234abcde" -F "[email protected]:\admin\videos\test.mp4;Type=video/mp4" -k https://www13.mp4upload.com/cgi-bin/upload.cgi?upload_type=file 

내가 가장 쉬운 방법이라고 판단 했으므로 그대로 두었습니다.

+0

(http://docs.guzzlephp.org/en/stable/psr7 .html? highlight = file). 반드시 가능합니다. 첫 번째 헤더를 프리 플라이트 요청이라고합니다. 데이터를 보유하고 있지는 않지만 200 OK 예선을 원래 요청으로 되돌려 보내야합니다. – Gegenwind

+0

첫 번째 헤더를 명확히 해 주셔서 감사합니다. 다른 하나는 라이브러리를 사용하여 이런 방식으로 배울 것이라고 생각하기 때문에 컬을 직접 사용하려고합니다. –

답변

0

사용 해결 다음은 목구멍 라이브러리를 사용하는 대신 직접 컬 작업 번거 로움을 많이 방지 할 수 있습니다 내 경험에서

curl -X POST -F "sess_id=1234abcde" -F "[email protected]:\admin\videos\test.mp4;Type=video/mp4" -k https://www13.mp4upload.com/cgi-bin/upload.cgi?upload_type=file