Как вывести изображение с сервера на устройство iOS по php, swift - PullRequest
0 голосов
/ 04 мая 2018

Я планирую отобразить изображение, хранящееся на локальном сервере (macbook), на моем iphone для тестирования приложения. Изображение хранится в пути: /Applications/XAMPP/xamppfiles/imagestock. Я пишу веб-сервис на PHP для отображения изображения при просмотре (например, URL), вот код сервера:

displayimage.php

<?php
$dir = '/Applications/XAMPP/xamppfiles/imagestock';
$file_display = array('jpg', 'jpeg', 'png', 'gif');

if (file_exists($dir) == false)
{
    echo 'Directory "', $dir, '" not found!';
}
else
{
    $dir_contents = scandir($dir);

    echo "<img src='img.php?name=photo-37.jpg' height='280' width='360' />";

}
?>

img.php

 <?php
    $name = $_GET['name'];
    $mimes = array
    (
        'jpg' => 'image/jpg',
        'jpeg' => 'image/jpg',
        'gif' => 'image/gif',
        'png' => 'image/png'
    );

    $ext = strtolower(end(explode('.', $name)));

    $file = '/Applications/XAMPP/xamppfiles/imagestock/'.$name;
    header('content-type: '. $mimes[$ext]);
    header('content-disposition: inline; filename="'.$name.'";');
    readfile($file);
?>

Я просто тестирую и вижу изображение чистым в своем браузере, в моем клиентском проекте для отображения изображения на UIImageView, мой код здесь:

func load_image()
{

    let session = URLSession(configuration: URLSessionConfiguration.default)

    guard let url = URL(string: "http://192.168.1.2/MyWebService/api/displayimage.php") else { return }

    var request = URLRequest(url: url)
    request.httpMethod = "GET"

    session.dataTask(with: request) { (data, response, error) in

        if let error = error {
            print("Something went wrong: \(error)")
        }

        if let imageData = data {
            DispatchQueue.main.async {
                self.imageStock.image = UIImage(data: imageData)
            }
        }
        }.resume()
}

Нет ошибки, но изображение не отображается. Итак, как я могу решить проблему? Я пробовал несколько способов, но не сработало. Я думаю, что ошибка с кодом сервера? Кто-нибудь может мне помочь?

Ответы [ 2 ]

0 голосов
/ 04 мая 2018

Наконец-то я получил ответ. Нет необходимости создавать код на стороне сервера, просто переместите папку imagestock в папку htdocs, посмотрите, как это

/Applications/XAMPP/xamppfiles/htdocs/imagestock

Изменить URL выше http://192.168.1.2/MyWebService/api/displayimage.php http://192.168.1.2/imagestock/photo-37.jpg в коде клиента

0 голосов
/ 04 мая 2018

в вашей функции load_image () вы пытаетесь загрузить изображение с сервера, который предоставляет вам изображение в форме данных. Но этот подход будет пытаться загружать изображение каждый раз, когда вы вызываете функцию. Вы должны получить только URL изображения в функции load_image (). затем, используя стороннюю игру Kingfisher, вы должны показать изображение. Как показано ниже

let url = URL(string: "url_of_your_image") // e.g. url_of_your_image  = http://192.168.1.2/imagestock/img.png
imageView.kf.setImage(with: url)

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

...