我计划在我的iphone上显示存储在服务器本地(macbook)上的图像以供测试应用。存储在路径中的图像:/Applications/XAMPP/xamppfiles/imagestock
。我通过PHP编写Web服务来在浏览中显示图像(如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()
}
没有错误发生,但图像不显示。那么,我该如何解决这个问题呢?我尝试了一些方法,但没有奏效。我认为服务器代码错误?有人可以帮帮我吗?
答案 0 :(得分:0)
在您的load_image()函数中,您尝试从服务器加载图像,该图像以数据形式提供图像。但是每次调用该函数时,此方法都会尝试下载图像。 您应该只在load_image()函数中获取图像的URL。 然后使用Kingfisher第三方,你应该显示image.as下面
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)
它只会下载一次图像并自动保持冗余。 如何在您的代码中导入翠鸟,可以看到here
答案 1 :(得分:0)
最后,我得到了答案。无需制作服务器端代码,将文件夹imagestock
简单移动到文件夹htdocs
中,看起来像这样
/Applications/XAMPP/xamppfiles/htdocs/imagestock
将网址更改为http://192.168.1.2/MyWebService/api/displayimage.php以上 到客户端代码中的http://192.168.1.2/imagestock/photo-37.jpg