【问题标题】:Where to put copy image code in my code?在我的代码中将复制图像代码放在哪里?
【发布时间】: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 构造函数抛出异常(数据库连接失败),您的代码将在此时中断。

标签: php html ajax database


【解决方案1】:
// Define your $return variable
$return = array();
if ($statement->execute(array($_POST['addbuildtitle'], $_POST['addbuilddesc'],     $_POST['addbuildcover'], $_POST['adduserid'], $frontpage,    $_POST['addtags']))) // No trailing semicolon for an inline if statement
     $dbSuccess = true;

你可以试试这个,看看能不能解决你的问题

【讨论】:

  • 您是否遇到任何错误?并添加一个 `if(copy(... , ...)){ echo 'something'; }else{ echo '什么都没发生'; ) }