2017-05-05 34 views
0

我遵循vimeo node.js api的文檔上傳文件。它非常簡單,我通過直接在節點中運行它,除了它需要我傳遞我想上傳的文件的完整路徑。代碼是在這裏:Vimeo API:使用表格從文件上載

function uploadFile() { 
    let file = '/Users/full/path/to/file/bulls.mp4'; 
    let video_id; //the eventual end URI of the uploaded video 

    lib.streamingUpload(file, function(error, body, status_code, headers) { 
     if (error) { 
     throw error; 
    } 

    lib.request(headers.location, function (error, body, status_code, headers) { 
     console.log(body); 
     video_id = body.uri; 
     //after it's done uploading, and the result is returned, update info 
     updateVideoInfo(video_id); 
    }); 
    }, function(upload_size, file_size) { 
     console.log("You have uploaded " + 
     Math.round((upload_size/file_size) * 100) + "% of the video"); 
    }); 
} 

現在我想融入我的反應程序產生的形式,除了evt.target.files的結果[0]不是一個完整的路徑,結果是這樣的:

File {name: "bulls.mp4", lastModified: 1492637558000, lastModifiedDate: Wed Apr 19 2017 14:32:38 GMT-0700 (PDT), webkitRelativePath: "", size: 1359013595…} 

只是爲了這個原因,我把它傳到我已經工作的上傳函數中,並沒有按照指定的原因工作。我錯過了什麼嗎?如果不是,我只想澄清我實際上必須做的事情。所以現在我正在看Vimeo官方指南,並且想確保這是正確的道路。請參閱:https://developer.vimeo.com/api/upload/videos

因此,如果我正確地閱讀它,您會做出幾個要求來實現相同的目標?

1)做一個GET到https://api.vimeo.com/me找出他們有剩餘的上傳數據。

2)發郵件到https://api.vimeo.com/me/videos獲取上傳權證。使用type: streaming如果我想繼續上傳,如由VIMEO streamingUpload()函數

3)提供的那些做一個PUT到https://1234.cloud.vimeo.com/upload?ticket_id=abcdef124567890

4)做一個PUT到https://1234.cloud.vimeo.com/upload?ticket_id=abcdef124567890但沒有文件數據和頭Content-Range: bytes */*隨時我想檢查上傳的字節。

聽起來沒錯?或者你可以簡單地使用一個表格,並且我在某處弄錯了。讓我知道。謝謝。

+0

如何在http調用中包含auth? –

回答

1

這個項目中有一些示例代碼可能值得您檢查:https://github.com/websemantics/vimeo-upload

您的描述對於流式傳輸系統來說基本正確,但我想澄清最後兩點。

3)在此步驟中,應使PUT請求與一個Content-Length頭描述文件的完整大小的URL(如這裏所描述:https://developer.vimeo.com/api/upload/videos#upload-your-video

4)在該步驟中,其原因你正在檢查上傳的字節是否已完成上傳,或者如果您的PUT請求中的連接中斷。我們可以節省儘可能多的字節數,並且我們會在第4步中迴應請求,並收到我們收到的字節數。這樣可以讓您從第一步開始繼續第3步,而不是從第一步開始。

爲了保持穩定性,我們強烈建議使用可恢復的上傳器,但如果您正在尋找簡單性,我們提供一個簡單的POST上傳器,它使用HTML表單。該文檔爲:https://developer.vimeo.com/api/upload/videos#simple-upload