Swift 3 - 如何将带参数的图像上传到 mysql

标签 swift swift3

我在上传中使用的这段代码(我在教程中找到它)运行成功,但无法识别参数而不是 WHERE emp_name ='(insert employee)' 它说 emp_name='' 因为我正在尝试使用新上传的图片更新 URL。请帮忙。我是新手。

 func UploadRequest()
{
    let url = URL(string: "http://www.example.com/empupload.php")

    let request = NSMutableURLRequest(url: url!)
    request.httpMethod = "POST"
    let boundary = generateBoundaryString()

    request.setValue("multipart/form-data; boundary=\(boundary)", forHTTPHeaderField: "Content-Type")

    if (imageDetail.image == nil)
    {
        return
    }

    let image_data = UIImagePNGRepresentation(imageDetail.image!)


    if(image_data == nil)
    {
        return
    }


    let body = NSMutableData()
    let loadempname = NSMutableURLRequest()


    let fname = "test.png"
    let mimetype = "image/png"
    let postString = "empName=\(empname.text!))"


    body.append("--\(boundary)\r\n".data(using: String.Encoding.utf8)!)
    body.append("Content-Disposition:form-data; name=\"test\"\r\n\r\n".data(using: String.Encoding.utf8)!)
    body.append("hi\r\n".data(using: String.Encoding.utf8)!)


    body.append(postString.data(using: String.Encoding.utf8)!)
    body.append("--\(boundary)\r\n".data(using: String.Encoding.utf8)!)
    body.append("Content-Disposition:form-data; name=\"file\"; filename=\"\(fname)\"\r\n".data(using: String.Encoding.utf8)!)
    body.append("Content-Type: \(mimetype)\r\n\r\n".data(using: String.Encoding.utf8)!)
    body.append(image_data!)
    body.append("\r\n".data(using: String.Encoding.utf8)!)



    body.append("--\(boundary)--\r\n".data(using: String.Encoding.utf8)!)


    request.httpBody = body as Data



    let session = URLSession.shared


    let task = session.dataTask(with: request as URLRequest, completionHandler: {
        (
        data, response, error) in

        guard ((data) != nil), let _:URLResponse = response, error == nil else {
            print("error")
            return
        }

        if let dataString = NSString(data: data!, encoding: String.Encoding.utf8.rawValue)
        {
            print(dataString)
        }

    })


    task.resume()


}

最佳答案

你可以在swift3.0中通过Alamofire multipartFormData发布图片。这是示例代码:

let  parameters = ["name":"YourName"]

Alamofire.upload(.POST, baseUrl, multipartFormData:
{
    multipartFormData in

    if  let imageData = UIImageJPEGRepresentation(self.imageView.image!, 0.6)
    {
        multipartFormData.appendBodyPart(data: imageData, name: "keyName", fileName: "photo.jpg", mimeType: "image/jpeg")
     }
     for (key, value) in parameters
     {
          if value is String || value is Int
          {
              multipartFormData.appendBodyPart(data: "\(value)".dataUsingEncoding(NSUTF8StringEncoding)!, name: key)
           }

      }
}, encodingCompletion:
    {
        encodingResult in
        switch encodingResult
        {
            case .Success(let upload, _, _):
                upload.responseJSON { response in
                print(response)
                if String(response.result) == "SUCCESS"
                {
                    if(response.result.value!.objectForKey("status")) as! String != "fail"
                    {
                        // here you can write success case
                    }
                    else
                    {

                    }
                }
                else
                {
                    MyLoadingView.dismiss();
                    MyAlertView.showErrorAlert("Please try Again" )
                }
            }
            case .Failure(let encodingError):
                print(encodingError)
            }
    })

关于Swift 3 - 如何将带参数的图像上传到 mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43337555/

相关文章:

ios - PFQueryTableViewController 错误

swift - 如何使用 Alamofire 从 URL 下载文件到自定义文件夹

ios - Xcode swift : Login/Signup Page not displaying first due to slideoutmenu

ios - 在 Swift 3.0 中从 Firebase 获取数据

ios - Xcode 编辑器在编译时花费太多时间

ios - 从 Swift 的 TimeInterval 中删除时间组件?

ios - 段错误 : 11 - Cross-reference to module

iOS 蓝牙服务建议

java - 在 iOS/Android 和 Firebase 中处理 Date 的最佳方法是什么?

ios - NVActivityIndi​​catorView 仅适用于特定 View