2016-12-06 11 views
0

DailyMotion에 Laravel 및 GuzzleHttp를 사용하여 비디오를 업로드하려고합니다.GuzzleHttp를 사용하여 DailyMotion에 비디오 업로드

$file = "3.mp4"; 
$fields["file"] = fopen($file, 'rb'); 
$res = $client->post($upload_url, [ 
    'headers' => ['Content-Type' => 'multipart/form-data'], 
    $fields 
]); 

$data3 = $res->getBody(); 
$response_upload_video = json_decode($data3,true); 
echo "<br>Getting dm upload video response: "; 
print_r($response_upload_video); 

$upload_url는 데일리 모션에 의해 전달되는 동적으로 생성 된 URL입니다 : 여기에 내 코드입니다. 위의 코드를 실행하면, 난 항상이 오류를 얻을 것이다 :

Production.ERROR: GuzzleHttp\Exception\ClientException:
Client error: POST http://upload-02.sg1.dailymotion.com/upload?uuid=werewkrewrewrwer&seal=pppppppppppppppp `resulted in a 400 Bad Request response:
{"error":"invalid content range","seal":"yyyyyyyyyyyyyyyyyy"} in /home/vagrant/Code/svc-titus/vendor/guzzlehttp/guzzle/src/Exception/RequestException.php:111

을하지만 아래에 표시로서 나는 우체부를 사용하여 동일한 업로드 URL에 동영상을 업로드 할 수 있습니다 enter image description here

답변

2

난 당신을 생각하지 않는다 content-type header를 지정해야합니다. guzzle이 리소스를 제공 할 때 자동으로 결정합니다. 비디오가 공개 디렉토리에 저장되는 경우 문제가있는 것으로 보입니다. public_path 또는 해당 경로 도우미 함수를 사용하여 물리적 경로를 가져와야합니다. guzzle에서 작동해야합니다. 6 여기에서 양식 파일을 확인하십시오. http://docs.guzzlephp.org/en/latest/quickstart.html#uploading-data

$file = "3.mp4"; 
$res = $client->post($upload_url, [ 
    'multipart' => [ 
     [ 
      'name'  => 'file', 
      'contents' => fopen(base_path($file), 'r') // give absolute path using path helper function 
     ] 
    ] 
]); 

$data3 = $res->getBody(); 
$response_upload_video = json_decode($data3,true); 
echo "<br>Getting dm upload video response: "; 
print_r($response_upload_video); 
+0

내가 코드를 "실행하려고이 오류가 발생했습니다 production.ERROR : 심포니 \ 구성 요소 \ 디버그 \ 예외 \의 FatalThrowableError : 입력 오류 : GuzzleHttp \ Psr7 \ MultipartStream :: addElement (에 전달 된 인수 2)해야합니다 주어진 배열의 배열, /home/vagrant/Code/svc-titus/vendor/guzzlehttp/psr7/src/MultipartStream.php에서 70 행 ".. 기본적으로 오류를 throw하는 줄은 'contents'= > fopen (base_path ($ file), 'r') – imin

+0

죄송합니다. 고마워요! – imin