Быстрая загрузка изображения с помощью REST API

#php #ios #swift #laravel

#php #iOS #swift #laravel

Вопрос:

Я пытаюсь загрузить UIImage на веб-сервер с помощью REST API, я получил ошибку 500. Что-то не так с кодом swift или кодом php? Я не могу найти никаких ошибок на веб-сервере.

 func UploadRequest(image: UIImage)
    {
        let url = NSURL(string: "https://server-to-upload-file.com")

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

        let boundary = generateBoundaryString()

        //define the multipart request type

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

        if (image == nil)
        {
            return
        }

        let image_data = UIImageJPEGRepresentation(image, 1)


        if(image_data == nil)
        {
            return
        }


        let body = NSMutableData()

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

        //define the data post parameter

        body.append("--(boundary)rn".data(using: String.Encoding.utf8)!)
        body.append("Content-Disposition:form-data; name="test"rnrn".data(using: String.Encoding.utf8)!)
        body.append("hirn".data(using: String.Encoding.utf8)!)



        body.append("--(boundary)rn".data(using: String.Encoding.utf8)!)
        body.append("Content-Disposition:form-data; name="file"; filename="(fname)"rn".data(using: String.Encoding.utf8)!)
        body.append("Content-Type: (mimetype)rnrn".data(using: String.Encoding.utf8)!)
        body.append(image_data!)
        body.append("rn".data(using: String.Encoding.utf8)!)


        body.append("--(boundary)--rn".data(using: String.Encoding.utf8)!)



        request.httpBody = body as Data



        let session = URLSession.shared


        let task = session.dataTask(with: request as URLRequest) {
            (
            data, response, error) in

            guard let _:NSData = data as NSData?, 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-(NSUUID().uuidString)"
    }
 

Комментарии:

1. ошибки 500, как правило, являются специфическими ошибками сервера, поэтому там что-то происходит. В вашем бэкэнде возникает ошибка, поэтому хорошим началом является выяснение, что это за ошибка, и работа в обратном направлении оттуда.

Ответ №1:

Код ошибки 500 — это ошибка сервера. В принципе, любое исключение в коде сервера создает этот код. Я пытаюсь сказать, что ваш серверный код может быть правильным и сбой происходит из-за неправильной отправки данных с устройства iOS, или вы отправляете данные в правильном формате, но ваш сервер не получает их должным образом.

Вам следует прочитать журнал ошибок вашего сервера, чтобы узнать больше.