Как определить путь и имя файла при отправке изображения на сервер в Swift 3 - PullRequest
0 голосов
/ 25 февраля 2019

Я довольно новичок в swift (и больше в php), и я пытаюсь загрузить изображение по определенному маршруту.Моя проблема в том, что я могу загрузить файл, но я не знаю, как это сделать с определенным именем файла и указать маршрут.

Это моя функция swift3 для загрузки изображения:

func myImageUploadRequest(){

        let url = URL(string: "https://MYURLADDRESS/picSaver.php")

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


        let boundary = generateBoundaryString()

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

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

        let image_data = UIImagePNGRepresentation(avatar_principal.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 файл:

<?php

if (move_uploaded_file($_FILES["file"]["tmp_name"], "delfaultName.png")){

    echo 'file uploaded: '.$_FILES["file"]["name"];

}


?>

Это хорошо работает.Загрузите мое изображение, но с именем файла, определенным в php, а не в swift.В настоящее время он записывает имя «defaultName.png» в моей папке, где у меня есть веб-сервис в php.Я хочу иметь возможность изменить имя и выбрать другую папку для записи файла

Как я могу определить личное имя файла и путь для сохранения этого файла?

Спасибо!

...