我正在尝试使用xml文件将远程图片复制到本地文件夹中。 XML文件如下;
<?xml version="1.0" encoding="UTF-8"?>
<items>
<item>
<image>
http://www.example.com/image.jpg,
https://www.example.com/image2.jpg
</image>
</item>
</items>
使用html表单上传文件后。我将图像插入到一个数组中,之后在foreach循环中使用该数组使用php copy函数从远程url复制到本地文件夹。代码如下:
$xml = simplexml_load_file($_FILES['file']['tmp_name']) or die("Error: Cannot create object");
foreach ($xml->children() as $row) {
$images = explode(',', $row->images);
foreach ($images as $image) {
copy($image, 'images/properties/'.$property_id.'/'.uniqid().'.jpg');
}
}
使用上面的代码不起作用,但如果我在复制功能内硬编码图像,则会复制图像。见下面的代码;
<?php
$images = explode(',', $row->images);
foreach ($images as $image) {
copy('https://www.example.com/image2.jpg', 'images/properties/'.$property_id.'/'.uniqid().'.jpg');
}
?>
所以问题是复制功能不适用于变量。我试图将变量包装在单引号和双引号中,但仍然没有用。
任何人都可以告诉我原因吗?
答案 0 :(得分:0)
在&#34;爆炸&#34;之后,您的图像名称中有一些空格/换行符。你的字符串。 copy()
功能无法使用之前的空格。您可以使用trim()
删除它们。
foreach ($images as $image) {
copy(trim($image), 'images/properties/'.$property_id.'/'.uniqid().'.jpg');
}
然后,您必须从XML获取数据:
foreach ($xml->item->image as $row) {
$images = explode(',', (string)$row);
$images = array_map('trim', $images); // trim your names (so the code above is no longer required.
}