//
// ViewController.swift
// http请求
//
// Created by admin on 16/2/26.
// Copyright © 2016年 jin. All rights reserved.
//
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
self.uploadFile()
}
func uploadFile()
{
let urlStr = "http://test.com/upload.php"
let url = NSURL(string: urlStr.stringByAddingPercentEscapesUsingEncoding(NSUTF8StringEncoding)!)
var request = NSMutableURLRequest(URL: url!, cachePolicy: NSURLRequestCachePolicy.ReloadIgnoringCacheData, timeoutInterval: 10)
// 设置上传文件所需要的信息
self.setUploadRequest(&request,filePath: NSBundle.mainBundle().pathForResource("2.jpg", ofType: nil)!)
NSURLConnection.sendAsynchronousRequest(request, queue: NSOperationQueue()) { (response: NSURLResponse?, data:NSData?, error:NSError?) -> Void in
let json:AnyObject? = try? NSJSONSerialization.JSONObjectWithData(data!, options: NSJSONReadingOptions.MutableContainers)
print(json)
}
}
// 设置上传文件的头
func setUploadRequest(inout request:NSMutableURLRequest,filePath:String)->NSMutableURLRequest
{
let seperator = "jin"
// 设置请求类型
request.HTTPMethod = "post"
// 设置http头
// Content-Type multipart/form-data; boundary(分隔符)=(可以随便写, 但是不能有中文)
let header = "multipart/form-data; boundary=\(seperator)"
request.setValue(header, forHTTPHeaderField: "Content-Type")
// 拼接数据
let bodyData = NSMutableData()
// \r\n--(可以随便写, 但是不能有中文)\r\n
var str = "\r\n--\(seperator)\r\n"
bodyData.appendData(str.dataUsingEncoding(NSUTF8StringEncoding)!)
// Content-Length(文件的大小) 这个不用写
// Content-Disposition: form-data; name="userfile(php脚本中用来读取文件的字段)"; filename="demo.json(要保存到服务器的文件名)"\r\n
str = "Content-Disposition: form-data; name=\"uploadFile\"; filename=\"newFile.jpg\"\r\n"
bodyData.appendData(str.dataUsingEncoding(NSUTF8StringEncoding)!)
// Content-Type: application/octet-stream(上传文件的类型)\r\n\r\n
str = "Content-Type: application/octet-stream\r\n\r\n"
bodyData.appendData(str.dataUsingEncoding(NSUTF8StringEncoding)!)
// 要上传的文件的二进制流
let fileData = NSData(contentsOfFile: filePath)
bodyData.appendData(fileData!)
// \r\n--(可以随便写, 但是不能有中文)--\r\n
str = "\r\n--\(seperator)--\r\n"
bodyData.appendData(str.dataUsingEncoding(NSUTF8StringEncoding)!)
request.HTTPBody = bodyData
return request
}
}