我正在尝试将从 UIImagePickerController 中选择的图像上传到我在 AWS 上托管的 Web 服务器。我正在关注本教程:https://www.udemy.com/swift-php-mysql-user-sign-up-sign-in-sign-out-and-more/learn/v4/overview我收到一堆 Argument labels '(_' do not match any available overloads 错误。我尝试搜索此错误,但没有找到与我当前代码相关的任何内容。我没有使用教程中的原始代码,我正在尝试将其翻译为 Swift3 并使用以下答案:iOS swift NSMutableData has no member appendString遵循最佳编码实践。这是我当前的代码:
func createBodyWithParameters(_ parameters: [String: String]?, filePathKey: String?, imageDataKey: Data, boundary: String) -> Data {
var body = Data();
if parameters != nil {
for (key, value) in parameters! {
body.append(Data("--\(boundary)\r\n"))
body.append(Data("Content-Disposition: form-data; name=\"\(key)\"\r\n\r\n"))
body.append(Data("\(value)\r\n"))
}
}
let filename = "user-profile.jpg"
let mimetype = "image/jpg"
body.append(Data("--\(boundary)\r\n"))
body.append(Data("Content-Disposition: form-data; name=\"\(filePathKey!)\"; filename=\"\(filename)\"\r\n"))
body.append(Data("Content-Type: \(mimetype)\r\n\r\n"))
body.append(imageDataKey)
body.append(Data("\r\n"))
body.append(Data("--\(boundary)--\r\n"))
return body as Data
}
谁能解释我做错了什么?谢谢!
Best Answer-推荐答案 strong>
你不能像这样初始化数据:
Data("foo")
你可以做的是:
Data("foo".utf8)
就像您提供的链接一样。 (您缺少 .utf8)
编辑:是的,那家伙说他不想使用那个代码,但是听我说,这个版本的扩展不允许有损连接,只要你在字符串中写任何东西,数据就永远不会为零。
extension NSMutableData {
func appendString(_ string: String) {
let data = string.data(using: String.Encoding.utf8, allowLossyConversion: false)
append(data!)
}
}
用法:
body.appendString("foo")
只需像这样初始化正文:
var body = NSMutableData()
然后像这样返回
return body as Data
关于php - swift3 - 将图像上传到网络服务器,我们在Stack Overflow上找到一个类似的问题:
https://stackoverflow.com/questions/43967087/
|