123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- //
- // SBTHttpTool.swift
- // SolarBT
- //
- // Created by weclouds on 2019/8/9.
- // Copyright © 2019 weclouds. All rights reserved.
- //
- import UIKit
- import MobileCoreServices
- class SBTHttpTool: NSObject {
- internal static let shareInstance = SBTHttpTool()
- // open func dataTask(with url: URL, completionHandler: @escaping (Data?, URLResponse?, Error?) -> Void) -> URLSessionDataTask
- func startUpload(_ url:String, parmeters : Data,successHandler:@escaping ((String)->Void),failureHandler:@escaping ((Error?) ->Void) ){
- //上传地址
- let postUrl = URL(string: url)
- var request = URLRequest(url: postUrl!)
- //请求类型
- request.httpMethod = "POST"
- request.setValue("multipart/form-data", forHTTPHeaderField: "Content-Type")
- //创建表单body
- request.httpBody = parmeters
-
- //创建一个表单上传任务
- let session = URLSession.shared
- let uploadTask = session.dataTask(with: request) { (data, response, error) in
-
- if error != nil{
- log.debug(error)
- failureHandler(error)
- }else{
- let str = String(data: data!, encoding: .utf8)
- log.debug("---上传完毕--\(str!)")
- successHandler(str!)
- }
- }
-
- //使用resume方法启动任务
- uploadTask.resume()
- }
-
- // //创建表单body
- // func createBody(with parameters : [String:Any]) -> Data {
- // var body = Data()
- // //添加参数数据
- // for (key,value) in parameters {
- // body.append("Content-Disposition: form-data; name=\"\(key)\"\r\n\r\n")
- // body.append("\(value)\r\n")
- // }
- // return body
- // }
-
- //根据后缀获取对应的Mine-Type
- func mimeType(pathExtension:String) -> String {
- if let uti = UTTypeCreatePreferredIdentifierForTag(kUTTagClassFilenameExtension,
- pathExtension as NSString,
- nil)?.takeRetainedValue() {
- if let mimetype = UTTypeCopyPreferredTagWithClass(uti, kUTTagClassMIMEType)?
- .takeRetainedValue() {
- return mimetype as String
- }
- }
- //文件资源类型如果不知道,传万能类型application/octet-stream,服务器会自动解析文件类
- return "application/octet-stream"
- }
- }
- extension Data{
- ///增加直接添加String数据的方法
- mutating func append(_ string :String,using encoding:String.Encoding = .utf8) {
- if let data = string.data(using: encoding) {
- append(data)
- }
- }
- }
|