2016-09-21 5 views
0

Bild hochladen scheitere ich senden von POST BildSwift 3 Bild hochladen PHP Ausfallen

enter image description here

enter image description here

class ViewController: UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate { 

@IBOutlet var image: UIImageView! 

override func viewDidLoad() { 
    super.viewDidLoad() 
} 

@IBAction func selectPicture(_ sender: AnyObject) { 

    let ImagePicker = UIImagePickerController() 
    ImagePicker.delegate = self 
    ImagePicker.sourceType = UIImagePickerControllerSourceType.photoLibrary 

    self.present(ImagePicker, animated: true, completion: nil)  
} 

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) { 

    image.image = info[UIImagePickerControllerOriginalImage] as? UIImage 
    self.dismiss(animated: true, completion: nil) 
} 

@IBAction func upload_request(_ sender: AnyObject) { 
    UploadRequest() 
} 

func UploadRequest() 
{ 
    let url = URL(string: "http://127.0.0.1/imgJSON/img.php") 

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

    let boundary = generateBoundaryString()   

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

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

    let image_data = UIImagePNGRepresentation(image.image!) 

    if(image_data == nil) 
    { 
     return 
    } 

    let body = NSMutableData() 

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

    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 = URLSession.shared.dataTask(with: request as URLRequest) {   (
     data, response, error) in 

     guard let _:Data = data, 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-\(UUID().uuidString)" 
} 

In PHP

if (move_uploaded_file($_FILES['file']['tmp_name'], "image.png")) { 
echo "File uploaded: ".$_FILES["file"]["name"]; } 

Antwort

0

Ihre zweite Screenshot php zeigt das Problem: Dies ist die Antwort des Servers mit einer PHP Warnung, der Apache/PHP Benutzer hat nicht die Berechtigung das hochgeladene Bild in das Zielverzeichnis zu verschieben in Ihrem Fall wäre dies das Wurzelverzeichnis (/) - weil Sie kein Verzeichnis angegeben haben/Pfad, wo das Bild gespeichert werden soll. Siehe Example 1 der PHP-Dokumentation.

So sollten Sie ein Upload-Verzeichnis (zB mkdir /Appli.../htdocs/uploads erstellen, setzen Sie die richtigen Berechtigungen (für dev Zweck chmod -R 777 Uploads) und geben Sie in Ihrem PHP das Zielverzeichnis :

if (move_uploaded_file($_FILES['file']['tmp_name'], "/Appli.../htdocs/uploads/image.png")) { ... 
+0

es in php if (move_uploaded_file ($ _ FILES [ 'Datei'] [ 'tmp_name'], "/Applications/XAMPP/xamppfiles/htdocs/image.png")) nicht funktionieren { echo "Datei hochgeladen:". $ _ FILES ["Datei"] ["Name"]; \t } Ich laufe Anwendung, aber zeige https://www.dropbox.com/s/gd87ym4yfr0lao3/%E0%B8%88%E0%B8%B1%E0%B8%9A%E0%B8%A0%E0%B8 % B2% E0% B8% 9E% E0% B8% AB% E0% B8% 99% E0% B9% 89% E0% B8% B2% E0% B8% 88% E0% B8% AD% 202559-09-21 % 20% E0% B9% 80% E0% B8% A7% E0% B8% A5% E0% B8% B2% 2017.14.01.png? Dl = 0 – user3592917

+0

Sie speichern das Bild jetzt direkt auf Ihre htdocs/Anwendungen/XAMPP/xamppfiles/htdocs/bitte versuche folgendes: –

+0

Sorry dass ich hier den kompletten Kommentar interferiert habe: du speicherst das Bild jetzt direkt in deinen htdocs Ordner:/Programme/XAMPP/xamppfiles/htdocs, bitte versuche folgendes auf deinem * * Terminal **: mkdir/Applications/XAMPP/xamppfiles/htdocs/uploads && chmod -R 777/Applications/XAMPP/xamppfiles/htdocs/uploads und Nutzung auf dann ** PHP **: if (move_uploaded_file ($ _ FILES [ 'Datei'] [ 'tmp_name'], "/Applications/XAMPP/xamppfiles/htdocs/uploads/image.png")) –