2014-05-19 4 views
0

DailyMotion 업로드 API에 mp4 비디오를 업로드하려고합니다. 파일 내용을 보내면 다음과 같은 오류 응답이 표시됩니다.DailyMotion 업로드 API 누락 된 파일 오류

Id = 31, Status = RanToCompletion, Method = "{null}", 
Result = "{\"error\":\"missing file\",\"seal\":\"4a24a4c8a51771d9d3b8bcd4462e721b\"}" 

나는 .NET 4.5에서 C#을 사용하고 다음과 같은 호출을 생성 한 :

POST [[UPLOAD URL]] HTTP/1.1 
Accept: */* 
Content-Type: multipart/form-data; boundary="c83ccd81-39f7-4167-a8f1-74ab63eb4219" 
Host: upload-01.sv6.dailymotion.com 
Content-Length: 9893501 
Expect: 100-continue 

--c83ccd81-39f7-4167-a8f1-74ab63eb4219 
Content-Disposition: form-data; name="file"; filename="TESTFILE.mp4" 
Content-Type: application/octet-stream 

[[[FILE BINARY]]] 

나는 성공적 데일리 모션의 CURL 샘플을 사용하여 업로드했습니다.

POST [[UPLOAD URL]] HTTP/1.1 
User-Agent: curl/7.33.0 
Host: upload-02.sv6.dailymotion.com 
Accept: */* 
Connection: Keep-Alive 
Content-Length: 9893509 
Expect: 100-continue 
Content-Type: multipart/form-data; boundary=------------------------a49610ec11411f2a 

--------------------------a49610ec11411f2a 
Content-Disposition: form-data; name="file"; filename="TESTFILE.mp4" 
Content-Type: application/octet-stream 

[[FILE BINARY]] 

파일 바이너리 외모와 내가 볼 수있는 유일한 차이는 연결 및 사용자 에이전트 헤더입니다 : 피들러를 사용 CURL은 다음 생성합니다. Connection 헤더를 조사한 결과 HTTP/1.1에서는 Keep-Alive가 필요없는 것처럼 보입니다. 여러 다른 User-Agents (Mozilla, CURL, IE)를 시도했지만 응답이 변경되지 않았습니다.

나는 무슨 일이 일어나고 있는지에 대해 통찰력을 얻었습니다. 감사합니다.

편집 추가 코드 :

mediatype = "video/mp4" 
name = "file" 
filename = "file" 
data = {byte[9893291]} 

public async Task UploadRequest(string mediatype, string name, string filename, byte[] data) 
    { 
     using(HttpClient httpClient = new HttpClient()) 
     { 
      var requestContent = new MultipartFormDataContent(); 

      httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("*/*")); 

      var videoContent = new ByteArrayContent(data); 
      videoContent.Headers.ContentDisposition = new ContentDispositionHeaderValue("form-data"); 
      videoContent.Headers.ContentDisposition.Name = "\"file\""; 
      videoContent.Headers.ContentDisposition.FileName = filename; 
      videoContent.Headers.ContentType = MediaTypeHeaderValue.Parse("application/octet-stream"); 

      requestContent.Add(videoContent, name); 

      Apirequest.HttpRequestMessage.Content = requestContent; 

      Apirequest.HttpResponseMessage = httpClient.SendAsync(Apirequest.HttpRequestMessage).Result; 
      Apirequest.HttpResponseMessage.EnsureSuccessStatusCode(); 

     } 
    } 

편집 업데이트 다음과 같은 도움

POST http://upload-02.nyc.dailymotion.com/upload?uuid=c8542d0a9be73c55fbace1ee4aa1744b&seal=4770461f7f07b4e0c15750d70bc44377 HTTP/1.1 
Accept: */* 
Content-Type: multipart/form-data; boundary=62fcae82-e1b2-4df3-99c4-90fad29be62d 
Host: upload-02.nyc.dailymotion.com 
Content-Length: 9893493 
Expect: 100-continue 

--62fcae82-e1b2-4df3-99c4-90fad29be62d 
Content-Disposition: form-data; name="Testfile.mp4"; filename=Testfile.mp4 
Content-Type: application/octet-stream 

���ftypmp42���mp41mp42isom���wide���mdat!�@h! 
�Ќ>��SZa��x�M�޹SZa��{�! 
�ˊ��]C���I��x�8V]�F}=�_Pc1�w�d>��.�! 
������hRDq��0�`D�4�QG��A��nn��û�6��ݳ���ι�τpE����s���8)�=����^�ʇ�/�N8k.��]Jr)�z���pTR� 
=}.�! 
[[FILE GOES ON]] 
ðb ’h 'v†)ˆI 7| F3• Ršv _Ê0 kC yDÀ ‚¡] ‰¢ h ŽÂi/
×ÿ ¥ Ó 
‘`Q ‘É ’Ö ’K ’Õ ’ÿ\ “ˆŠ “³Â ”"G ”7» +udta #titl ÇTestFile 
--62fcae82-e1b2-4df3-99c4-90fad29be62d-- 

편집 : 수정의 코드 예제 요청했다. 다음과 같이이다 :

videoContent.Headers.ContentDisposition.FileName = "\"" + name + "\""; 
+0

실제 코드를 제공 할 수 있습니까? 무엇이 잘못되었는지 이해하는 데 도움이 될 수 있습니다. – Tilly

답변

2

조사 후에는 HTTP 헤더에 인용 된 콘텐츠의 경계, according to the RFC1341을 이해하지 못하는 우리 측에서 파일 업로드 처리를 담당하는 nginx를 업로드 모듈처럼 보인다 HTTP의 경계를 정의하는 표준 방법이 아닙니다. 요청을 만드는 데 사용하는 C# 라이브러리가 multipart/form-data (12.4.4 절 참조) 대신 multipart/digest 콘텐츠 형식의 표준을 따르고있는 것 같습니다. 이 항목이 사용자가 제어 할 수 있는지 여부를 확인하고 다시 테스트하십시오.

+1

경계에서 따옴표를 제거 할 수있는 해결 방법을 사용할 수있었습니다. 나는 여전히 같은 오류가 발생합니다. 여러 개의 오류가있을 수 있지만 세부 정보를 볼 수는 없습니다. 고맙습니다! – ScoobySnax

+1

업로드 URL을 난독하게하지 않고 파일 자체의 몇 바이트와 경계를 포함하여 실행하려는 전체 HTTP 요청에 참여할 수 있습니까? 귀하의 문제는 여기에 종을 울리지 않는다. 나는 실제로 업로드 과정 자체가 아닌 또 다른 오류가있을 수 있다고 생각한다. 사용자를 올바르게 인증하고 있습니까? – Dailymotion

+0

코드 및 게시 된 결과가 업데이트되었습니다. 나는 내가 인증 받았음을 확인하고 티켓/업로드 URL을 업로드 할 수 있습니다. 나는 또한 인증 된 다른 활동을 할 수 있음을 확인했다. – ScoobySnax