ViewController.swift 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. //
  2. // ViewController.swift
  3. // Swifter
  4. // Copyright (c) 2015 Damian Kołakowski. All rights reserved.
  5. //
  6. import UIKit
  7. import Swifter
  8. class ViewController: UIViewController {
  9. private var server: HttpServer?
  10. override func viewDidLoad() {
  11. super.viewDidLoad()
  12. let server = HttpServer();
  13. server.get["/upload"] = { r in
  14. return .OK(.Html("<form method=\"POST\" action=\"/upload\" enctype=\"multipart/form-data\">" +
  15. "<input name=\"my_file\" type=\"file\"/>" +
  16. "<button type=\"submit\">Send File</button>" +
  17. "</form>"))
  18. }
  19. server.post["/upload"] = { r in
  20. if let myFileMultipart = r.parseMultiPartFormData().filter({ $0.name == "my_file" }).first {
  21. guard let documentsUrl = NSFileManager.defaultManager().URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask).first else {
  22. return .InternalServerError
  23. }
  24. let data: NSData = myFileMultipart.body.withUnsafeBufferPointer { pointer in
  25. return NSData(bytes: pointer.baseAddress, length: myFileMultipart.body.count)
  26. }
  27. guard let fileSaveUrl = NSURL(string: "name_for_file.txt", relativeToURL: documentsUrl) else {
  28. return .InternalServerError
  29. }
  30. print(fileSaveUrl)
  31. data.writeToURL(fileSaveUrl, atomically: true)
  32. return .OK(.Html("Your file has been uploaded !"))
  33. }
  34. return .InternalServerError
  35. }
  36. do {
  37. try server.start(9099)
  38. } catch {
  39. print("Server start error: \(error)")
  40. }
  41. self.server = server
  42. }
  43. @IBAction func likedThis(sender: UIButton) {
  44. self.server?.stop()
  45. self.server = nil
  46. }
  47. }