2016-09-01 17 views
9

का उपयोग करके आईओएस से PHP अपलोड अपलोड करें मैं आईओएस से सर्वर पर 3 PHP छवियों को अपनी PHP सेवा में अपलोड करने की कोशिश कर रहा हूं। किसी कारण से फ़ोल्डर पोस्ट करने के बाद खाली रहता है, लेकिन शेष डेटा चला जाता है और mysql में जारी रहता है।अलामोफ़ीयर

मेरे आईओएस कोड:

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

      if (firstPhoto != nil) { 
       if let firstImageData = UIImageJPEGRepresentation(firstImage!, 0.6) { 
        print("uploading image"); 
        multipartFormData.appendBodyPart(data: firstImageData, name: "firstImage", fileName: "firstImage.png", mimeType: "image/png") 
       } 
      } 

      if (secondPhoto != nil) { 
       if let secondImageData = UIImageJPEGRepresentation(secondImage!, 0.6) { 
        print("uploading image"); 
        multipartFormData.appendBodyPart(data: secondImageData, name: "secondImage", fileName: "secondImage.png", mimeType: "image/png") 
       } 
      } 

      if (thirdPhoto != nil) { 
       if let thirdImageData = UIImageJPEGRepresentation(thirdImage!, 0.6) { 
        print("uploading image"); 
        multipartFormData.appendBodyPart(data: thirdImageData, name: "thirdImage", fileName: "thirdImage.png", mimeType: "image/png") 
       } 
      } 


      if let imageData = UIImageJPEGRepresentation(firstImage!, 0.6) { 
       print("uploading image"); 
       multipartFormData.appendBodyPart(data: imageData, name: "image", fileName: "file.png", mimeType: "image/png") 
      } 

      if let imageData = UIImageJPEGRepresentation(firstImage!, 0.6) { 
       print("uploading image"); 
       multipartFormData.appendBodyPart(data: imageData, name: "image", fileName: "file.png", mimeType: "image/png") 
      } 


      for (key, value) in parameters { 
       multipartFormData.appendBodyPart(data: value.dataUsingEncoding(NSUTF8StringEncoding)!, name: key) 
      } 

      }, encodingCompletion: { 
       encodingResult in 

       switch encodingResult { 
       case .Success(let upload, _, _): 
        print("Запрос отправлен") 
        upload.responseJSON { response in 
         print(response.request) // original URL request 
         print(response.response) // URL response 
         print(response.data)  // server data 
         print(response.result) // result of response serialization 

         if let JSON = response.result.value { 
          print("JSON: \(JSON)") 
         } 
         completion(response.result.value) 
        } 

       case .Failure(let encodingError): 
        print(encodingError) 
        completion(nil) 
       } 
     }) 

} 

मेरी पीएचपी पर मैं अगर मैं कुछ भी यहाँ याद कर रहा हूँ यकीन नहीं है:

<?php 

require_once 'Functions/common_functions.php'; 
require_once 'Functions/engine.php'; 
require_once 'Functions/json.php'; 
require_once 'Functions/check_token.php'; 

if (count($_REQUEST) == 6) { 
    foreach($_REQUEST as $k => $v) { 
     if (strlen($k) > 0 && strlen($v) > 0) { 
      $_REQUEST[$mysqli->real_escape_string($k)] = $mysqli->real_escape_string($v); 
     } else { 
      die(errorJSON("Empty parameter", "666")); 
     } 
    } 

    $userID = checkAccessToken($_REQUEST['access_token'], $mysqli); 

    if ($userID == 0) { 
     die(errorJSON("Incorrect access token", "666")); 
    } 

    $mysqli->query('INSERT INTO Book (title, authorID, detail, price, categoryID, conditionText) VALUES ("'.$_REQUEST['title'].'", "'.$userID.'", "'.$_REQUEST['detail'].'", "'.$_REQUEST['price'].'", "'.$_REQUEST['categoryID'].'", "'.$_REQUEST['condition'].'")'); 

    $insertID = $mysqli->insert_id; 

    if ($insertID > 0) { 
     savePhotos($mysqli, $insertID); 
     $message = book($insertID, $userID, $mysqli); 
     die(successJSON($message)); 
    } else { 
     die(errorJSON("Failed insert book in database", "666")); 
    } 
} else { 
    die(errorJSON("Incorrect count of parameter" . count($REQUEST) . count($_POST), "666")); 
} 

function savePhotos($mysqli, $bookID) { 
    if(!is_dir('/home/thebakpa/resources/book_photos/')) { 
     mkdir('/home/thebakpa/resources/book_photos/', 0777, true); 
    } 
    try { 
     $uploaddir = '/home/thebakpa/resources/book_photos/'; 
     $file = $_FILES['userfile']['photo1']; 

     if ($file != 0) { 
      $uploadfile = $uploaddir . $file; 

      $name = "photo1-".$bookID; 
      $photoPath = '/home/thebakpa/resources/book_photos/'.$name.'.jpg'; 

      $mysqli->query('UPDATE Book SET photo1='.$photoPath.' WHERE bookID='.$bookID.''); 
      move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile); 
     } 

     $file = $_FILES['userfile']['photo2']; 

     if ($file != 0) { 
      $uploadfile = $uploaddir . $file; 

      $name = "photo2-".$bookID; 
      $photoPath = '/home/thebakpa/resources/book_photos/'.$name.'.jpg'; 

      $mysqli->query('UPDATE Book SET photo1='.$photoPath.' WHERE bookID='.$bookID.''); 
      move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile); 
     } 

     $file = $_FILES['userfile']['photo3']; 

     if ($file != 0) { 
      $uploadfile = $uploaddir . $file; 

      $name = "photo3-".$bookID; 
      $photoPath = '/home/thebakpa/resources/book_photos/'.$name.'.jpg'; 

      $mysqli->query('UPDATE Book SET photo1='.$photoPath.' WHERE bookID='.$bookID.''); 
      move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile); 
     } 
    } catch(Exception $ex){ 
     echo "ERROR:".$ex->GetMessage()."\n"; 
     exit(1); 
    } 
} 
?> 
+0

मुझे वास्तव में यह प्रश्न पसंद है। बस इसे बाउंटी टाइमर पर 35 मिनट के साथ छोड़ दिया। मुझे पता है कि आपके किसी भी उत्तर में वोट नहीं हैं। कृपया मुझे सूचित करें यदि यह दोबारा बक्षीस के लिए जाता है और अनसुलझा है। मैं थोड़ी अधिक समय के साथ अपने पोस्ट कोड के आसपास एक समाधान बनाना चाहता हूं। जोड़ना चाहिए, मैं बाहर बक्षीस के साथ हल करेंगे। –

+1

मुझे लगता है कि उपयोगकर्ता ने प्रश्न पोस्ट किया है इस सवाल पर सक्रिय नहीं है। क्योंकि मेरा जवाब सही है और मैंने नमूना कोड के साथ भी कोशिश की है लेकिन कोई प्रतिक्रिया नहीं है। –

+0

कूल मैं बस तुम्हारा पढ़ रहा था। मैंने इसे पहले वोट दिया ... लेकिन फिर खुद को रोक दिया क्योंकि मैंने इसका परीक्षण नहीं किया था। मैं आपको वोट दूंगा;) सही दिखता है। –

उत्तर

5

समस्या का उपयोग करने का प्रयास करें PHP स्रोत का फ़ोटो फ़ंक्शन। आईओएस कोड में भी कुछ अतिरिक्त कोड लिखा गया है। मैंने अतिरिक्त कोड हटा दिया है। एक बार कोशिश करो

यहाँ यहाँ अद्यतन

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

     if (firstPhoto != nil) { 
      if let firstImageData = UIImagePNGRepresentation(firstImage!, 0.6) { 
       print("uploading image"); 
       multipartFormData.appendBodyPart(data: firstImageData, name: "firstImage", fileName: "firstImage.png", mimeType: "image/png") 
      } 
     } 

     if (secondPhoto != nil) { 
      if let secondImageData = UIImagePNGRepresentation(secondImage!, 0.6) { 
       print("uploading image"); 
       multipartFormData.appendBodyPart(data: secondImageData, name: "secondImage", fileName: "secondImage.png", mimeType: "image/png") 
      } 
     } 

     if (thirdPhoto != nil) { 
      if let thirdImageData = UIImagePNGRepresentation(thirdImage!, 0.6) { 
       print("uploading image"); 
       multipartFormData.appendBodyPart(data: thirdImageData, name: "thirdImage", fileName: "thirdImage.png", mimeType: "image/png") 
      } 
     } 

     for (key, value) in parameters { 
      multipartFormData.appendBodyPart(data: value.dataUsingEncoding(NSUTF8StringEncoding)!, name: key) 
     } 

     }, encodingCompletion: { 
      encodingResult in 

      switch encodingResult { 
      case .Success(let upload, _, _): 
       print("Запрос отправлен") 
       upload.responseJSON { response in 
        print(response.request) // original URL request 
        print(response.response) // URL response 
        print(response.data)  // server data 
        print(response.result) // result of response serialization 

        if let JSON = response.result.value { 
         print("JSON: \(JSON)") 
        } 
        completion(response.result.value) 
       } 

      case .Failure(let encodingError): 
       print(encodingError) 
       completion(nil) 
      } 
    }) 

} 

आईओएस कोड है और PHP कोड

function savePhotos($mysqli, $bookID) { 
    $basePath = '/home/thebakpa/resources/book_photos/' 
    if(!is_dir($basePath)) { 
     mkdir($basePath, 0777, true); 
    } 
    try { 
     $file1 = $_FILES['firstImage']; 

     if (is_uploaded_file($file1['tmp_name'])) { 
      $photoPath = $basePath.'photo1-'.$bookID.'.jpg'; 

      if (move_uploaded_file($file1['tmp_name'], $photoPath)) { 
       $mysqli->query('UPDATE Book SET photo1='.$photoPath.' WHERE bookID='.$bookID.''); 
      } 
     } 

     $file2 = $_FILES['secondImage']; 

     if (is_uploaded_file($file2['tmp_name'])) { 
      $photoPath = $basePath.'photo2-'.$bookID.'.jpg'; 

      if (move_uploaded_file($file2['tmp_name'], $photoPath)) { 
       $mysqli->query('UPDATE Book SET photo2='.$photoPath.' WHERE bookID='.$bookID.''); 
      } 
     } 

     $file3 = $_FILES['thirdImage']; 

     if (is_uploaded_file($file3['tmp_name'])) { 
      $photoPath = $basePath.'photo3-'.$bookID.'.jpg'; 

      if (move_uploaded_file($file3['tmp_name'], $photoPath)) { 
       $mysqli->query('UPDATE Book SET photo3='.$photoPath.' WHERE bookID='.$bookID.''); 
      } 
     } 
    } catch(Exception $ex){ 
     echo "ERROR:".$ex->GetMessage()."\n"; 
     exit(1); 
    } 
} 
+0

आपको बहुत धन्यवाद – franklinexpress

+0

आपका स्वागत है ........ –

+0

'' 'अगर (! is_dir ($ बेसपाथ)) {' '' यहां पार्स त्रुटि को अनदेखा किया जा सकता है? – franklinexpress

1

नाम अपने php में ['userfile']['photo1'] मेल नहीं खाते। लेकिन आईओएस पक्ष userfile और photo1 पर कभी भी उपयोग नहीं किया जाता है। $_FILES['firstImage']

1

है यह कोशिश अगर आप छवि नाम chnaging द्वारा json प्रारूप में छवि प्रस्तुत (अन्य छवियों के लिए एक ही कोड को दोहराने)

<?php  

      $image   = $file; 
      $directorypath1 = $uploaddir; 
      $img   = str_replace('data:image/PNG;base64,', '', $image); 
      $img   = str_replace(' ', '+', $img); 
      $data   = base64_decode($img); 
      $name   = rand() . '_' . time() . ".jpg"; 
      $img_path  = $directorypath1 . $name; 
      file_put_contents($img_path, $data); 

?> 
संबंधित मुद्दे