2015-05-15 13 views
2

PHP腳本和xcode的顯示,這裏是具體PHP和用於圖像上載SWIFT代碼爲sftp

******響應數據=
通知:未定義指數:用戶id在/家在線/raimonds/script.php
{ 「消息」: 「首先名稱字段爲空」, 「狀態」: 「錯誤」, 「用戶id」:空}

所以這裏php代碼:

<?php 
if(!empty($_POST["firstName"])){ 

    $firstName = isset($_POST["firstName"]) ? $_POST["firstName"] : ""; 
    $lastName = isset($_POST["lastName"]) ? $_POST["lastName"] : ""; 
    $userId = isset($_POST["userId"]) ? $_POST["userId"] : ""; 
    $target_dir = "uploads/"; 

    if(!file_exists($target_dir)) 
    { 
    mkdir($target_dir, 0777, true); 
    } 

    $target_dir = $target_dir . "/" . basename($_FILES["file"]["name"]); 

    if (move_uploaded_file($_FILES["file"]["tmp_name"], $target_dir)) { 
     echo json_encode([ 
     "Message" => "The file ". basename($_FILES["file"]["name"]). " has been uploaded.", 
     "Status" => "OK", 
     "userId" => $_POST["userId"] 
     ]); 

    } else { 
     echo json_encode([ 
     "Message" => "Sorry, there was an error uploading your file.", 
     "Status" => "Error", 
     "userId" => $_POST["userId"] 
     ]); 
    } 

}else{ 

     echo json_encode([ 
     "Message" => "First name field empty", 
     "Status" => "Error", 
     "userId" => $_POST["userId"] 
     ]); 

} 

?> 

你能幫我嗎? Xcode的部分是:

// 
// ViewController.swift 
// ImageUploader 
// 
// Created by Raimonds on 14/05/15. 
// Copyright (c) 2015 Raimonds. All rights reserved. 
// 

import UIKit 

class ViewController: UIViewController, UIImagePickerControllerDelegate, 
    UINavigationControllerDelegate 

{ 
    @IBOutlet weak var myImageView: UIImageView! 

    @IBOutlet weak var myActivityIndicator: UIActivityIndicatorView! 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     // Do any additional setup after loading the view, typically from a nib. 
    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 


    @IBAction func uploadButtonTapped(sender: AnyObject) { 

     myImageUploadRequest() 

    } 

    @IBAction func selectPhotoButtonTapped(sender: AnyObject) { 

     var myPickerController = UIImagePickerController() 
     myPickerController.delegate = self; 
     myPickerController.sourceType = UIImagePickerControllerSourceType.PhotoLibrary 

     self.presentViewController(myPickerController, animated: true, completion: nil) 

    } 

    func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [NSObject : AnyObject]) 

    { 

    myImageView.image = info[UIImagePickerControllerOriginalImage] as? 
     UIImage 

     self.dismissViewControllerAnimated(true, completion: nil) 

    } 





    func myImageUploadRequest() 

    { 

     let myUrl = NSURL(string: "http://raimonds.gtd.lv/script.php"); 
     let request = NSMutableURLRequest(URL: myUrl!); 
     request.HTTPMethod = "POST"; 


     let param = [ 
      "firstName" : "firstName", 
      "lastName" : "lastName", 
      "userId" : "9" 
     ] 

     let boundary = generateBoundaryString() 

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

     let imageData = UIImageJPEGRepresentation(myImageView.image, 1) 

     if (imageData==nil) {return; } 

     request.HTTPBody = createBodyWithParameters(param, filePathKey: "file", imageDataKey: imageData, boundary: boundary) 

     myActivityIndicator.startAnimating(); 

     let task = NSURLSession.sharedSession().dataTaskWithRequest(request) { 
      data, response, error in 

      if error != nil { 
       println("error=\(error)") 
       return 
      } 


      println("******* response = \(response)") 

      let responseString = NSString(data: data, encoding: NSUTF8StringEncoding) 
      println("****** response data = \(responseString!)") 

      var err: NSError? 
      var json = NSJSONSerialization.JSONObjectWithData(data, options: .MutableContainers, error: &err) 
       as? NSDictionary 


      dispatch_async(dispatch_get_main_queue(),{ 
       self.myActivityIndicator.stopAnimating() 
       self.myImageView.image = nil; 

      }); 


    } 


    task.resume() 


} 


    func createBodyWithParameters(parameters: [String: String]?, filePathKey: String?, imageDataKey: NSData, boundary: String) -> NSData { 

     var body = NSMutableData(); 

     if parameters != nil { 
      for (key, value) in parameters! { 
       body.appendString("--\(boundary)\r\n") 
       body.appendString("Content-Disposition: form-data; name=\"\(key)\"\r\n\r\n") 

      } 
     } 

     let filename = "user-profile.jpg" 

     let mimetype = "image/jpg" 

     body.appendString("--\(boundary)\r\n") 
     body.appendString("Content-Disposition: form-data; name=\"\(filePathKey!)\"; filename=\"\(filename)\"\r\n") 
     body.appendString("Content-Type: \(mimetype)\r\n\r\n") 
     body.appendData(imageDataKey) 
     body.appendString("\r\n") 

     body.appendString("--\(boundary)--\r\n") 

     return body 
    } 

    func generateBoundaryString() -> String { 
     return "Boundary--\(NSUUID().UUIDString)" 
    } 

} 

extension NSMutableData { 
    func appendString(string: String) { 
     let data = string.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: true) 
     appendData(data!) 
    } 




} 

回答

0

您的SWIFT代碼一些問題,因爲你不發送POST數據到PHP

嘗試看看如何迅速發送POST請求: http://ios-blog.co.uk/tutorials/swift-how-to-send-a-post-request-to-a-php-script/

你需要類似的東西:

var url: NSURL = NSURL(string: "http://raimonds.gtd.lv/script.php")! 
var request:NSMutableURLRequest = NSMutableURLRequest(URL:url) 
request.HTTPMethod = "POST" 
var bodyData = "firstName=firstName&lastName=lastName&userId=9" 
request.HTTPBody = bodyData.dataUsingEncoding(NSUTF8StringEncoding); 
NSURLConnection.sendAsynchronousRequest(request, queue: NSOperationQueue.mainQueue()) 
{ 
    (response, data, error) in 
    println(response) 

} 
+0

你可以看看嗎?我將在這裏粘貼xcode代碼。 –

+0

@RaimondsPlume更新了我的文章 –

+0

仍然是一樣的錯誤。你能幫我忙嗎? :) –