Chilkat HOME Android™ Classic ASP C C++ C# Mono C# .NET Core C# C# UWP/WinRT DataFlex Delphi ActiveX Delphi DLL Visual FoxPro Java Lianja MFC Objective-C Perl PHP ActiveX PHP Extension PowerBuilder PowerShell PureBasic CkPython Chilkat2-Python Ruby SQL Server Swift 2 Swift 3,4,5... Tcl Unicode C Unicode C++ Visual Basic 6.0 VB.NET VB.NET UWP/WinRT VBScript Xojo Plugin Node.js Excel Go
(Excel) Frame.io - Upload an AssetUpload an asset to Frame.io For more information, see https://docs.frame.io/docs/uploading-assets
' This example assumes the Chilkat API to have been previously unlocked. ' See Global Unlock Sample for sample code. Dim http As Chilkat.Http Set http = Chilkat.NewHttp ' Implements the following CURL command: ' curl --request POST \ ' --url https://api.frame.io/v2/assets/<ASSET_ID>/children \ ' --header 'authorization: Bearer <FRAME_IO_DEV_TOKEN>' \ ' --header 'content-type: application/json' \ ' --data '{"filesize":1570024 ,"filetype":"video/mp4","name":"rotating_earth","type":"file"}' ' Use the following online tool to generate HTTP code from a CURL command ' Convert a cURL Command to HTTP Source Code ' Use this online tool to generate code from sample JSON: ' Generate Code to Create JSON ' The following JSON is sent in the request body. ' { ' "filesize": 1570024, ' "filetype": "video/mp4", ' "name": "rotating_earth", ' "type": "file" ' } localFilePath = "qa_data/mp4/rotating_earth.mp4" Dim fac As Chilkat.FileAccess Set fac = Chilkat.NewFileAccess fileSize = fac.FileSize(localFilePath) Dim json As Chilkat.JsonObject Set json = Chilkat.NewJsonObject Dim success As Boolean success = json.UpdateInt("filesize",fileSize) success = json.UpdateString("filetype","video/mp4") success = json.UpdateString("name","rotating_earth7") success = json.UpdateString("type","file") http.SetRequestHeader "content-type","application/json" ' Adds the "Authorization: Bearer <FRAME_IO_DEV_TOKEN>" header. http.AuthToken = "<FRAME_IO_DEV_TOKEN>" ' Uploading to asset ID: 039845e8-bffe-4d6b-88d3-c780bae06342 Set resp = http.PostJson3("https://api.frame.io/v2/assets/039845e8-bffe-4d6b-88d3-c780bae06342/children","application/json",json) If (http.LastMethodSuccess = False) Then Debug.Print http.LastErrorText Exit Sub End If Dim sbResponseBody As Chilkat.StringBuilder Set sbResponseBody = Chilkat.NewStringBuilder success = resp.GetBodySb(sbResponseBody) Dim jResp As Chilkat.JsonObject Set jResp = Chilkat.NewJsonObject success = jResp.LoadSb(sbResponseBody) jResp.EmitCompact = False Debug.Print "Response Body:" Debug.Print jResp.Emit() respStatusCode = resp.StatusCode Debug.Print "Response Status Code = "; respStatusCode If (respStatusCode >= 400) Then Debug.Print "Response Header:" Debug.Print resp.Header Debug.Print "Failed." Exit Sub End If ' Upload in chunks to the pre-signed S3 upload URLs. ' There are ways to do this in parallel, but for simplicity we'll show how to upload ' one chunk after another. numChunks = jResp.SizeOfArray("upload_urls") sizePerChunk = (fileSize + numChunks - 1) / numChunks Debug.Print "numChunks = "; numChunks Debug.Print "sizePerChunk = "; sizePerChunk success = fac.OpenForRead(localFilePath) If (success = False) Then Debug.Print fac.LastErrorText Exit Sub End If Dim bd As Chilkat.BinData Set bd = Chilkat.NewBinData Dim httpForUpload As Chilkat.Http Set httpForUpload = Chilkat.NewHttp httpForUpload.SetRequestHeader "x-amz-acl","private" i = 0 Do While (i < numChunks) success = bd.Clear() success = fac.ReadBlockBd(i,sizePerChunk,bd) jResp.I = i uploadUrl = jResp.StringOf("upload_urls[i]") ' Send the chunk in a PUT: Debug.Print "PUT chunk "; (i + 1) Debug.Print "URL: "; uploadUrl ' PUT https://frameio-uploads-production.s3/etc/etc ' Content-Type: video/mp4 ' x-amz-acl: private Set resp = httpForUpload.PBinaryBd("PUT",uploadUrl,bd,"video/mp4",False,False) If (httpForUpload.LastMethodSuccess = False) Then Debug.Print httpForUpload.LastErrorText Exit Sub End If Debug.Print "response status: "; resp.StatusCode i = i + 1 Loop fac.FileClose Debug.Print "File uploaded." |
© 2000-2022 Chilkat Software, Inc. All Rights Reserved.