2016-10-14 19 views
1

REST APIを使用してUIImageをWebサーバーにアップロードしようとしましたが、500エラーが発生しました。迅速なコードやPHPコードに問題がありますか?私はWebサーバー上でエラーを見つけることができません。REST APIを使用したSwiftアップロード画像

func UploadRequest(image: UIImage) 
    { 
     let url = NSURL(string: "https://server-to-upload-file.com") 

     let request = NSMutableURLRequest(url: url! as URL) 
     request.httpMethod = "POST" 

     let boundary = generateBoundaryString() 

     //define the multipart request type 

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

     if (image == nil) 
     { 
      return 
     } 

     let image_data = UIImageJPEGRepresentation(image, 1) 


     if(image_data == nil) 
     { 
      return 
     } 


     let body = NSMutableData() 

     let fname = "test.png" 
     let mimetype = "image/png" 

     //define the data post parameter 

     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("--\(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) { 
      (
      data, response, error) in 

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

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

     } 

     task.resume() 


    } 


    func generateBoundaryString() -> String 
    { 
     return "Boundary-\(NSUUID().uuidString)" 
    } 
+0

エラーは一般的にはサーバーエラーであるため、何かが発生しています。バックエンドでエラーが発生しているため、開始するのが適切なのは、そのエラーが何であるかを調べてそこから逆方向に作業することです。 – Dima

答えて

0

エラーコード500はサーバーエラーです。基本的にサーバーコードの例外はこのコードを生成します。 iOSデバイスから間違ったデータが送信されたか、適切な形式でデータを送信していてサーバーが正常に受信していないため、サーバーコードが正しいと判断してクラッシュする可能性があります。

詳細は、サーバーのエラーログを参照してください。

関連する問題