Commit 555dcc40 authored by pete谢兆麟's avatar pete谢兆麟

上传文件

parent cb6b23db
......@@ -72,4 +72,26 @@ class YHBaseViewModel {
callBackBlock(nil,err)
}
}
// 上传方法
func uploadFile(_ url: String, callBackBlock:@escaping (_ success: String?, _ error:YHErrorModel?)->()) {
let strUrl = YHBaseUrlManager.shared.curOssURL() + YHAllApiName.OSS.uploadApi
printLog("\(url)")
let boundary = UUID().uuidString
let headers: HTTPHeaders = [
"Content-type": "multipart/form-data; boundary=\(boundary)",
"businessCode": "4001001"
]
let _ = YHNetRequest.uplaodFileRequest(url: strUrl, headers: headers, fileUrl: url) { [weak self] json, code in
guard let self = self else { return }
if json.code == 200 {
callBackBlock(json.data as? String, nil)
} else {
let error : YHErrorModel = YHErrorModel(errorCode:Int32(json.code), errorMsg: json.msg)
callBackBlock(nil, error)
}
} failBlock: { err in
callBackBlock(nil, err)
}
}
}
......@@ -102,6 +102,10 @@ class YHUploadContentVC: YHBaseViewController {
// 将文件数据上传到服务器
let size = String(format: "%.2fM", Double(fileData.count)/(1024.0 * 1024.0))
print("\(size)")
self.viewModel.uploadFile(fileUrl.absoluteString) {[weak self] success, error in
guard let self = self else { return }
}
}
}
sheetView.uploadImageBlock = {
......
......@@ -9,7 +9,7 @@ import Foundation
import Alamofire
import CryptoSwift
import UIKit
import CoreServices
//class YHNetErrorModel {
// var responseStatusCode: Int = 0
// var responseStatusCodeStr: String = ""
......@@ -198,6 +198,52 @@ class YHNetRequest: NSObject {
return uploadRequest
}
func uploadFileRequest(_ headers: HTTPHeaders, _ url: String) -> Request? {
guard YHNetworkStatusManager.shared.isNetWorkOK == true else {
YHHUD.flash(message: "网络异常")
return httpRequest
}
guard let fileData = try? Data(contentsOf: URL(string: url) ?? URL(fileURLWithPath: "")) else {
return httpRequest
}
let fileExtension = URL(fileURLWithPath: url).pathExtension.lowercased()
let fileUTI = mimeType(for: url)
#if DEBUG
printLog("\(fileExtension)-------\(fileUTI ?? "")")
#endif
let multipartFormData = MultipartFormData()
// 将图片添加到multipartFormData中
multipartFormData.append(fileData, withName: "file", fileName: "image.\(fileExtension)", mimeType: fileUTI)
// 发送POST请求
let uploadRequest = AF.upload(multipartFormData: multipartFormData, to: self.url!, headers: headers)
uploadRequest.responseString(completionHandler: { string in
#if DEBUG
printLog("\n网络请求已返回 string=\(string)")
#endif
self.completeHandle(string: string)
})
return uploadRequest
}
func mimeType(for path: String) -> String? {
let url = URL(fileURLWithPath: path)
let pathExtension = url.pathExtension
if let uti = UTTypeCreatePreferredIdentifierForTag(kUTTagClassFilenameExtension, pathExtension as CFString, nil)?.takeRetainedValue() {
if let mimeType = UTTypeCopyPreferredTagWithClass(uti, kUTTagClassMIMEType)?.takeRetainedValue() {
return mimeType as String
}
}
return nil
}
/// 请求response完成处理
func completeHandle(string: AFDataResponse<String>) {
let responseResult = string.result
......@@ -267,4 +313,9 @@ extension YHNetRequest {
printLog("\n发起请求的URL是===> url = \(url)")
return YHNetRequest().url(url).success(successBlock).failed(failBlock).uploadRequest(headers, image)
}
class func uplaodFileRequest(url:String, headers:HTTPHeaders, fileUrl: String, successBlock: SuccessResultType!, failBlock: FailureHandlerType!) -> Request? {
printLog("\n发起请求的URL是===> url = \(url)")
return YHNetRequest().url(url).success(successBlock).failed(failBlock).uploadFileRequest(headers, fileUrl)
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment