File Upload Encoding
File upload (PUT) operations use multipart/form-data encoding.
Example
PUT /api/v1/files/cliScript/incremental HTTP/1.1 Host: 10.4.219.229 Authorization: Basic QWRtaW46QWRtaW4= Content-Length: 210 Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW ------WebKitFormBoundary7MA4YWxkTrZu0gW Content-Disposition: form-data; name="file"; filename="cli.txt" Content-Type: application/octet-stream show system version ------WebKitFormBoundary7MA4YWxkTrZu0gW--
Use the following code snippets to generate proper format.
cURL
curl -i -X PUT -F "file=@cli.txt" -H "Expect:" -u Admin:Admin \ http://10.4.219.229/api/v1/files/cliScript/incremental
Python
import requests import base64 def send_cli(ip, username, password, cli_script): url = 'http://' + ip + '/api/v1/files/cliScript/incremental' cred = username + ':' + password cred_encoded = base64.b64encode(cred.encode()).decode() headers = {'Authorization': 'Basic ' + cred_encoded} files = {'file': ('cli.txt', cli_script)} response = requests.put(url, files=files, headers=headers) return response.status_code, response.text send_cli('10.4.219.229', 'Admin', 'Admin', 'show system version')
PowerShell
$cliData = "show system version" $ip = "10.4.219.229" $username = "Admin" $password = "Admin" $URL = "http://{0}/api/v1/files/cliScript/incremental" ` -f $ip $authHash = [Convert]::ToBase64String( ` [Text.Encoding]::ASCII.GetBytes( ` ("{0}:{1}" -f $username,$password))) $boundary = [System.Guid]::NewGuid().ToString(); $LF = "`r`n"; $bodyLines = ( "--$boundary", ("Content-Disposition: form-data; name=`"file`";" + ` " filename=`"file.txt`""), "Content-Type: application/octet-stream$LF", $cliData, "--$boundary--$LF" ) -join $LF $response = Invoke-RestMethod -Uri $URL -Method Put ` -Headers @{Authorization=("Basic {0}" -f $authHash)} ` -ContentType "multipart/form-data; boundary=$boundary" ` -Body $bodyLines $response | ConvertTo-Json
If you prefer to use a GUI tool, use the Postman (https://www.getpostman.com) application or Chrome extension and set it up as follows: