import Cocoa
class uploadToServer: NSObject, URLSessionDelegate, URLSessionTaskDelegate, URLSessionDataDelegate {
var response: URLResponse?
var session: URLSession?
var uploadTask: URLSessionUploadTask?
let opQueue = OperationQueue()
func upload() {
let config = URLSessionConfiguration.default
let url = URL(string: "http://localhost:8042/instances")
let request = NSMutableURLRequest(url: url!)
request.httpMethod = "POST"
request.setValue("Keep-Alive", forHTTPHeaderField: "Connection")
let folder = Bundle.main.path(forResource: "dicom", ofType: "")!
for i in 1...10 {
let fileurl = URL(string: folder + "/" + String(i) + ".dcm")
session = URLSession(configuration: config, delegate: self, delegateQueue: self.opQueue)
if let task = session?.uploadTask(with: request as URLRequest, fromFile: fileurl! as URL) {
task.resume()
} // end if
} // end for
} // end func
func urlSession(_ session: URLSession, task: URLSessionTask, didCompleteWithError error: Error?) {
// the task finished
if let err = error {
print("Error: \(err.localizedDescription)")
} else {
print("The upload was successful.")
self.session?.finishTasksAndInvalidate()
} // end if
} // end func
func urlSession(_ session: URLSession, dataTask: URLSessionDataTask, didReceive response: URLResponse, completionHandler: @escaping (URLSession.ResponseDisposition) -> Void) {
print("did receive response")
self.response = response
print(self.response!)
completionHandler(URLSession.ResponseDisposition.allow)
} // end func
func urlSession(_ session: URLSession, task: URLSessionTask, didSendBodyData bytesSent: Int64, totalBytesSent: Int64, totalBytesExpectedToSend: Int64) {
let progress = Float(totalBytesSent) / Float(totalBytesExpectedToSend)
print(progress)
} // end func
} // end class