67 lines
1.9 KiB
Julia
67 lines
1.9 KiB
Julia
|
|
function plik_oneshot_upload(file_server_url::String, dataname::String, data::Vector{UInt8})
|
|
|
|
# ----------------------------------------- get upload id ---------------------------------------- #
|
|
# Equivalent curl command: curl -X POST -d '{ "OneShot" : true }' http://localhost:8080/upload
|
|
url_getUploadID = "$file_server_url/upload" # URL to get upload ID
|
|
headers = ["Content-Type" => "application/json"]
|
|
body = """{ "OneShot" : true }"""
|
|
http_response = HTTP.request("POST", url_getUploadID, headers, body)
|
|
response_json = JSON.parse(http_response.body)
|
|
uploadid = response_json["id"]
|
|
uploadtoken = response_json["uploadToken"]
|
|
|
|
# ------------------------------------------ upload file ----------------------------------------- #
|
|
# Equivalent curl command: curl -X POST --header "X-UploadToken: UPLOAD_TOKEN" -F "file=@PATH_TO_FILE" http://localhost:8080/file/UPLOAD_ID
|
|
file_multipart = HTTP.Multipart(dataname, IOBuffer(data), "application/octet-stream") # Plik won't accept raw bytes upload
|
|
url_upload = "$file_server_url/file/$uploadid"
|
|
headers = ["X-UploadToken" => uploadtoken]
|
|
|
|
# Create the multipart form data
|
|
form = HTTP.Form(Dict(
|
|
"file" => file_multipart
|
|
))
|
|
|
|
# Execute the POST request
|
|
http_response = nothing
|
|
try
|
|
http_response = HTTP.post(url_upload, headers, form)
|
|
catch e
|
|
@error "Request failed" exception=e
|
|
end
|
|
response_json = JSON.parse(http_response.body)
|
|
fileid = response_json["id"]
|
|
|
|
# url of the uploaded data e.g. "http://192.168.1.20:8080/file/3F62E/4AgGT/test.zip"
|
|
url = "$file_server_url/file/$uploadid/$fileid/$dataname"
|
|
|
|
return Dict("status" => http_response.status, "uploadid" => uploadid, "fileid" => fileid, "url" => url)
|
|
end
|
|
|
|
|
|
using HTTP, JSON
|
|
|
|
file_server_url = "https://fileserver.yiem.cc"
|
|
dataname = "test.txt"
|
|
data = Vector{UInt8}("hello world")
|
|
|
|
# Upload to local plik server
|
|
result = plik_oneshot_upload(file_server_url, dataname, data)
|
|
println(result)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|