gpt4 book ai didi

php - 使用 PHP 替换以前的图像并向服务器添加新图像

转载 作者:行者123 更新时间:2023-11-29 00:37:41 25 4
gpt4 key购买 nike

我目前正在开发一个“编辑项目”脚本,该脚本允许用户替换我网站上的图片。这部分效果很好。

但是,我还想要允许上传新图像的选项 - 这些不会替换现有图像。因此,总而言之,用户可以使用表单替换现有图像并上传新图像。

问题: 我如何告诉我的 PHP 有些图像是而不是替换图像?我需要这样做才能对新图像运行 INSERT INTO 查询。

我在下面附上了我的部分代码:

PHP 处理现有文件的替换:

    // get original name for ProjectImage update
$query3 = "SELECT * FROM ProjectImage as pi WHERE pid = '$id' ORDER BY pi.id";
$result3 = mysql_query ($query3); // Run the Query
$row3 = mysql_fetch_array($result3);
$originalname = $row3[1];

$number_of_file_fields = 0;
$number_of_uploaded_files = 0;
$number_of_moved_files = 0;
$uploaded_files = array();
$upload_directory = dirname(__file__) . '/uploaded/'; //set upload directory

for ($i = 0; $i < count($_FILES['images']['name']); $i++) {
$number_of_file_fields++;
if ($_FILES['images']['name'][$i] != '') { //check if file field empty or not
$number_of_uploaded_files++;
$uploaded_files[] = $_FILES['images']['name'][$i];
if (move_uploaded_file($_FILES['images']['tmp_name'][$i], $upload_directory . $_FILES['images']['name'][$i])) {
$number_of_moved_files++;
$url = $_FILES['images']['name'][$i];
list($width, $height, $type, $attr) = getimagesize("uploaded/".$_FILES["images"]['name'][$i]);
$pieces = explode("_", $url);
$ImageName = $pieces[1];
mysql_query("UPDATE ProjectImage SET Name = '$ImageName', Url = '$url', UrlHeight = '$height' WHERE Name = '$originalname' AND Pid = '$id'");
}
}
}

&

用于生成现有图像列表的 PHP:

$query2 = "SELECT * FROM ProjectImage as pi WHERE pid = '$id' ORDER BY pi.id";
$result2 = mysql_query ($query2); // Run the Query
while ($row2 = mysql_fetch_array($result2))
{
?>
<div id="file_container" class="control-group">
<label for="image" class="control-label">Image:</label>
<div class="controls">
<input name="images[]" type="file" />
<img src="uploaded/<?php echo $row2['Url']; ?>" />
<a href="delete.php?id=<?php echo $row2['id']; ?>">Delete</a>
<br />
</div>
</div>
<?php
}
?>
<a href="javascript:void(0);" onClick="add_file_field();">Add another</a><br />

非常感谢任何指点:-)

最佳答案

我不完全确定您是否希望它们替换现有的。无论如何,我会给你所有需要的方法来做:

file_exists() - 返回基于路径的 bool 值。可用于检查相同文件是否已存在。

rename() - 你可能已经在你的代码中的某个地方有这个了。它基本上取代了搬迁时的现有文件。如果您不希望出现这种情况,请先使用 file_exists() 条件。

您可以通过MYSQL 轻松解决上传和替换功能INSERT ... ON UPDATE方法。这将需要将图像路径的一列设置为唯一,无论如何您都应该这样做。

示例:

INSERT INTO ProjectImage (Name, Url, UrlHeight, path_to_file)
VALUES ('$ImageName', '$url', '$height', '$path_to_file')
ON DUPLICATE KEY UPDATE Name = VALUES(Name), Url = VALUES(Url), UrlHeight = VALUES(UrlHeight)

除此之外,恐怕我发现您的代码太不合逻辑而无法使用。有些变量有大写字母,有些对于它们所描述的内容来说太长,您的代码有 MySQL 注入(inject)的危险。

关于php - 使用 PHP 替换以前的图像并向服务器添加新图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13602435/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com