【发布时间】:2023-09-17 03:14:01
【问题描述】:
我正在使用此代码:
copy('imgurl', 'images/covers/file.jpeg');
将图片网址复制到我网站上的文件中。
当我在一个 php 页面中只有上面的代码,但当我把它放到我的实际代码中时,我无法让它工作。
这就是我正在使用的:
try {
$db = new PDO($dsn, $username, $password);
$db->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
$statement = $db->prepare("INSERT INTO blogs (blogtitle, blogdesc, coverimage, userID, frontpage, tags)
VALUES (?, ?, ?, ?, ?, ?)");
if ($statement->execute(array($_POST['addbuildtitle'], $_POST['addbuilddesc'], $_POST['addbuildcover'], $_POST['adduserid'], $frontpage, $_POST['addtags'])));
$dbSuccess = true;
} catch (Exception $e) {
$return['databaseException'] = $e->getMessage();
}
$return['databaseSuccess'] = $dbSuccess;
$return['lastid'] = $db->lastInsertId();
copy('imgurl', 'images/covers/file1.jpeg');
echo json_encode($return);
}
但是这不起作用并且没有创建图像。
应该放在哪里? imgurl 将被替换为正确的用户输入 url,并且文件名将在此工作后以某种方式创建。
我也知道它不安全,但它目前还没有上线,很快就会通过 :)
【问题讨论】:
-
你有什么错误吗?尝试
copy('imgurl', getenv('DOCUMENT_ROOT') . '/images/covers/file1.jpeg');并检查目标文件夹的权限,它必须可由网络服务器用户写入。 -
没有错误,代码本身工作正常。但不是当它放入用于输入数据库的代码时
-
但是我不认为
copy()接受 URL 作为源参数。 -
例如复制('media.fastcar.co.uk/wp-content/uploads/2012/12/…', 'images/covers/file5.jpeg');效果很好。
-
$db->lastInsertId()不能在try块之外,因为$db可能未定义。如果 PDO 构造函数抛出异常(数据库连接失败),您的代码将在此时中断。