2016-09-21 4 views
0

Загрузить изображение не в состоянии я отправить изображение по почте PHPSwift 3 Загрузить изображение PHP Терпят неудачу

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)" 
} 

В PHP

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

ответ

0

Ваш второй скриншот показывает проблему: это ответ сервера с предупреждением PHP, у пользователя apache/php нет разрешений на перемещение загруженного изображения в целевой каталог в вашем случае это будет корневой каталог (/) - потому что вы не указали каталог/путь где хранить изображение. См. Example 1 документации PHP.

Таким образом, вы должны создать каталог загрузки (например, MkDir /Appli.../htdocs/uploads, установите правильные разрешения (для DEV назначения CHMOD -R 777 загрузки) и укажите в PHP целевой каталог :

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

это не работает в PHP если (move_uploaded_file ($ _ FILES [ 'файл'] [ 'tmp_name'], "/Applications/XAMPP/xamppfiles/htdocs/image.png")) { echo «Загруженный файл:». $ _ FILES ["file"] ["name"]; \t } Запуск приложения, но показать 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

Теперь вы сохраняете изображение непосредственно на htdocs/Applications/XAMPP/xamppfiles/htdocs/попробуйте следующее: –

+0

Извините, что я был замешан здесь в полном комментарии: Теперь вы сохраняете изображение непосредственно в своей папке htdocs:/Applications/XAMPP/xamppfiles/htdocs, попробуйте следующее на своем * * терминал **: MkDir/Применение/XAMPP/xamppfiles/HTDOCS/добавление && CHMOD -R 777/Applications/XAMPP/xamppfiles/HTDOCS/добавление , а затем использовать на ** PHP **: if (move_uploaded_file ($ _ FILES ['file'] ['tmp_name'], "/Applications/XAMPP/xamppfiles/htdocs/uploads/image.png")) –

Смежные вопросы