Uploadcare Swift integration handles uploads by wrapping Upload and REST APIs.
Check out demo.
To use a stable version add a dependency to your Package.swift file:
dependencies: [
.package(url: "https://github.com/uploadcare/uploadcare-swift.git", from: "0.1.0-alpha")
]
If you want to try the current dev version, add a dependency to your Package.swift file:
dependencies: [
.package(url: "https://github.com/uploadcare/uploadcare-swift.git", branch("develop"))
]
Or you can just add it using Xcode: https://github.com/uploadcare/uploadcare-swift (select master branch)
To use a stable version add a dependency to your Cartfile:
github "uploadcare/uploadcare-swift" "0.1.0-alpha"
To use current dev version:
github "uploadcare/uploadcare-swift" "develop"
To use a stable version add a dependency to your Podfile:
pod 'Uploadcare', git: 'https://github.com/uploadcare/uploadcare-swift'
To use current dev version:
pod 'Uploadcare', git: 'https://github.com/uploadcare/uploadcare-swift', :branch => 'develop'
Create your project in Uploadcare dashboard and copy its API keys from there.
let uploadcare = Uploadcare(withPublicKey: "YOUR_PUBLIC_KEY")
// secret key is optional. Initialization with secret key:
let uploadcare = Uploadcare(withPublicKey: "YOUR_PUBLIC_KEY", secretKey: "YOUR_SECRET_KEY")
Direct uploads (API Reference)
guard let url = URL(string: "https://source.unsplash.com/random"), let data = try? Data(contentsOf: url) else { return }
uploadcare.uploadAPI.upload(files: ["some_random_name.jpg": data], store: .store) { (result, error) in
if let error = error {
print(error)
return
}
guard let files = result else { return }
for file in files {
print("uploaded file name: \(file.key) | file id: \(file.value)")
}
}
Multipart uploads (API Reference)
Multipart Uploads are useful when you are dealing with files larger than 100MB or explicitly want to use accelerated uploads. Multipart Upload contains 3 steps:
- Start transaction
- Upload file chunks
- Complete transaction
You can use the upload method that will run all 3 steps for you:
guard let url = Bundle.main.url(forResource: "Mona_Lisa_23mb", withExtension: "jpg") else { return }
let fileForUploading = uploadcare.uploadAPI.file(withContentsOf: url)
fileForUploading?.upload(withName: "Mona_Lisa_big.jpg")
// or uploading with callback
fileForUploading.uploadFile(data, withName: "Mona_Lisa_big.jpg") { (file, error) in
if let error = error {
print(error)
return
}
print(file ?? "")
}
Upload files from URLs (API Reference)
let url = URL(string: "https://source.unsplash.com/random")
let task1 = UploadFromURLTask(sourceUrl: url!)
// upload
uploadcare.uploadAPI.upload(task: task1) { [unowned self] (result, error) in
if let error = error {
print(error)
return
}
print(result)
}
UploadFromURLTask is used to store upload parameters.
// Set parameters by accessing properties:
let task2 = UploadFromURLTask(sourceUrl: url!)
task2.store = .store
// Set parameters using chaining
let task3 = UploadFromURLTask(sourceUrl: url!)
.checkURLDuplicates(true)
.saveURLDuplicates(true)
.store(.store)
Check the status of a file uploaded from URL (API Reference)
uploadcare.uploadAPI.uploadStatus(forToken: "UPLOAD_TOKEN") { (status, error) in
if let error = error {
print(error)
return
}
print(status)
}
File info (API Reference)
uploadcare.uploadAPI.fileInfo(withFileId: "FILE_UUID") { (file, error) in
if let error = error {
print(error)
return
}
print(info)
}
Create files group (API Reference)
Uploadcare lib provides 2 methods to create group.
- Provide files as an array of UploadedFile:
let files: [UploadedFile] = [file1,file2]
self.uploadcare.uploadAPI.createFilesGroup(files: files) { (response, error) in
if let error = error {
print(error)
return
}
print(response)
}
- Provide an array of files UUIDs:
let filesIds: [String] = ["FILE_UUID1", "FILE_UUID2"]
self.uploadcare.uploadAPI.createFilesGroup(fileIds: filesIds) { (response, error) in
if let error = error {
print(error)
return
}
print(response)
}
Files group info (API Reference)
uploadcare.uploadAPI.filesGroupInfo(groupId: "FILES_GROUP_ID") { (group, error) in
if let error = error {
print(error)
return
}
print(group)
}
Uploadcare documentation
Upload API reference
REST API reference
Changelog
Contributing guide
Security policy
Support