gpt4 book ai didi

ios - 有没有办法通过 Alamofire 上传 doc、pdf 文件?

转载 作者:行者123 更新时间:2023-12-01 18:05:16 26 4
gpt4 key购买 nike

我浏览了很多帖子但不满意,目前我正在使用File Explorer Framework并且工作正常,但是当我选择一个文件(文件可以是 pdf、docs 或任何文本文件)时,我将如何将该文件上传到服务器中?

let fileExplorer = FileExplorerViewController()
fileExplorer.canChooseFiles = true //specify whether user is allowed to choose files
fileExplorer.canChooseDirectories = false //specify whether user is allowed to choose directories
fileExplorer.allowsMultipleSelection = true //specify whether user is allowed to choose multiple files and/or directories
fileExplorer.delegate = self

self.present(fileExplorer, animated: true, completion: nil)

及其委托(delegate)方法
public func fileExplorerViewController(_ controller: FileExplorerViewController, didChooseURLs urls: [URL]) {
//Your code here
}

现在如何通过从委托(delegate)方法获取文件 url 来上传文件?

任何帮助将不胜感激。

谢谢

最佳答案

你可以使用文档选择器

fileprivate func p_documentclicked() { 
let importMenu = UIDocumentMenuViewController(documentTypes: ["public.text", "public.data","public.pdf", "public.doc"], in: .import)
importMenu.delegate = self
self.present(importMenu, animated: true, completion: nil)
}

然后它有一个委托(delegate)方法
internal func documentPicker(_ controller: UIDocumentPickerViewController, didPickDocumentAt url: URL) { 
let cico = url as URL
print(cico)
self.downloadfile(URL: cico as NSURL)
}

拥有 URL 后您可以下载文件,然后上传文件。
fileprivate func downloadfile(URL: NSURL) {
let sessionConfig = URLSessionConfiguration.default
let session = URLSession(configuration: sessionConfig, delegate: nil, delegateQueue: nil)
var request = URLRequest(url: URL as URL)
request.httpMethod = "GET"
let task = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
if (error == nil) {
// Success
let statusCode = response?.mimeType
print("Success: \(String(describing: statusCode))")
DispatchQueue.main.async(execute: {
self.p_uploadDocument(data!, filename: URL.lastPathComponent!)
})

// This is your file-variable:
// data
}
else {
// Failure
print("Failure: %@", error!.localizedDescription)
}
})
task.resume()
}

您可以使用此方法上传 doc 和 pdf 文件:
fileprivate func p_uploadDocument(_ file: Data,filename : String) {

let parameters = ["yourParam" : "sample text"]
let fileData = file
let URL2 = try! URLRequest(url: "your api", method: .post, headers: ["Authorization" :"your auth key"])

Alamofire.upload(multipartFormData: { (multipartFormData) in

multipartFormData.append(fileData as Data, withName: "upfile", fileName: filename, mimeType: "text/plain")


for (key, value) in parameters {
multipartFormData.append((value as AnyObject).data(using: String.Encoding.utf8.rawValue)!, withName: key)
}
}, with: URL2 , encodingCompletion: { (result) in

switch result {
case .success(let upload, _, _):
print("s")
upload.responseJSON {
response in
if let JSON = response.result.value as? [String : Any]{
let messageString = JSON["message"] as? String
// use the JSON
}else {
//error hanlding
}

}
}
case .failure(let encodingError):
// error handling
}
}
)
}

关于ios - 有没有办法通过 Alamofire 上传 doc、pdf 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47453832/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com