用PHP存储图像
我想让用户上传图片。文件重新命名(通过将time()添加到当前名称),然后移动到“我的图像/文件夹”。然后在html/php代码中引用上传到数据库表中的名称。图像不会显示,因为表中的名称与实际文件名不同。图像名称需要更改,以防两个用户上载具有相同名称的文件。如何将time()名称更改应用于表中的文件名和实际文件名,以便显示图像。这是我的密码:用PHP存储图像,php,mysql,Php,Mysql,我想让用户上传图片。文件重新命名(通过将time()添加到当前名称),然后移动到“我的图像/文件夹”。然后在html/php代码中引用上传到数据库表中的名称。图像不会显示,因为表中的名称与实际文件名不同。图像名称需要更改,以防两个用户上载具有相同名称的文件。如何将time()名称更改应用于表中的文件名和实际文件名,以便显示图像。这是我的密码: if (!empty($_FILES['picture'])) { $pic= $_FILES['picture']['name'];
if (!empty($_FILES['picture']))
{
$pic= $_FILES['picture']['name'];
$target= GW_UPLOADPATH . time() . $pic;
if (move_uploaded_file($_FILES['picture']['tmp_name'], $target))
{
$query= "INSERT INTO posts (user_id, story, picture) VALUES
('$user_id', '$story', '$pic')";
mysqli_query($connect, $query);
header( 'Location: profile.php' );
}
}
表中的图片名称只是ball.jpg,实际文件可能是18292018ball.jpg。试试这个
$query= "INSERT INTO posts (user_id, story, picture)
VALUES ('$user_id', '$story', '$target')";
试试这个
$query= "INSERT INTO posts (user_id, story, picture)
VALUES ('$user_id', '$story', '$target')";
在MySql查询中不应该使用“$target”而不是“$pic”吗
$query= "INSERT INTO posts (user_id, story, picture) VALUES ('$user_id', '$story', '$target')";
在MySql查询中不应该使用“$target”而不是“$pic”吗
$query= "INSERT INTO posts (user_id, story, picture) VALUES ('$user_id', '$story', '$target')";
不需要每次都存储上传路径,除非它在不同的时间点可能不同
$name = time() . $pic;
$target= GW_UPLOADPATH .$name;
$query= "INSERT INTO posts (user_id, story, picture) VALUES
('$user_id', '$story', '$name')";
不需要每次都存储上传路径,除非它在不同的时间点可能不同
$name = time() . $pic;
$target= GW_UPLOADPATH .$name;
$query= "INSERT INTO posts (user_id, story, picture) VALUES
('$user_id', '$story', '$name')";
为了确保没有任何重复:
- 成功后,将文件移动到磁盘上的正确位置
- 失败时,在第二步重新启动,生成不同的ID
为了确保没有任何重复:
- 成功后,将文件移动到磁盘上的正确位置
- 失败时,在第二步重新启动,生成不同的ID
您在数据库中存储的文件名与保存的文件名不同。如果只想使用文件名,请在将文件名附加到路径之前将其存储在变量中,即,而不是
$target= GW_UPLOADPATH . time() . $pic;
做
并在SQL查询中使用$fileName代替$pic:
$query= "INSERT INTO posts (user_id, story, picture) VALUES ('$user_id', '$story', '$fileName')";
您在数据库中存储的文件名与保存的文件名不同。如果只想使用文件名,请在将文件名附加到路径之前将其存储在变量中,即,而不是
$target= GW_UPLOADPATH . time() . $pic;
做
并在SQL查询中使用$fileName代替$pic:
$query= "INSERT INTO posts (user_id, story, picture) VALUES ('$user_id', '$story', '$fileName')";
注意:如果添加
time()
作为前缀,则两个图像的前缀将不同
当您更改文件名时,为什么不将新名称存储在db中
$changed_name = time().$pic;
$query= "INSERT INTO posts (user_id, story, picture) VALUES
($user_id, '".$story."', '".$changed_name ."')";
更改文件名的提示
- 首先取出扩展名和名称
- 按单个空格删除多个空格
- 然后将空格替换为
。
- 转换图像名称的大小写(我更喜欢小写)
- 然后添加带有图像名称的time()
- 最后添加该扩展并存储到图像文件夹中
time()
作为前缀,则两个图像的前缀将不同
当您更改文件名时,为什么不将新名称存储在db中
$changed_name = time().$pic;
$query= "INSERT INTO posts (user_id, story, picture) VALUES
($user_id, '".$story."', '".$changed_name ."')";
更改文件名的提示
- 首先取出扩展名和名称
- 按单个空格删除多个空格
- 然后将空格替换为
。
- 转换图像名称的大小写(我更喜欢小写)
- 然后添加带有图像名称的time()
- 最后添加该扩展并存储到图像文件夹中
if (!empty($_FILES['picture'])) {
$pic= time() . $_FILES['picture']['name'];
$target= GW_UPLOADPATH . $pic;
if (move_uploaded_file($_FILES['picture']['tmp_name'], $target)) {
$query= "INSERT INTO posts (user_id, story, picture) VALUES ('$user_id', '$story', '$pic')";
mysqli_query($connect, $query);
header( 'Location: profile.php' );
}
}
如果所有(例如图像/文件夹)的路径相同,则可以使用以下方法:
if (!empty($_FILES['picture'])) {
$pic= time() . $_FILES['picture']['name'];
$target= GW_UPLOADPATH . $pic;
if (move_uploaded_file($_FILES['picture']['tmp_name'], $target)) {
$query= "INSERT INTO posts (user_id, story, picture) VALUES ('$user_id', '$story', '$pic')";
mysqli_query($connect, $query);
header( 'Location: profile.php' );
}
}
试试这个:
if (!empty($_FILES['picture']))
{
$pic= $_FILES['picture']['name'];
$picname = time() . $pic;
$target= GW_UPLOADPATH . $picname;
if (move_uploaded_file($_FILES['picture']['tmp_name'], $target))
{
$query= "INSERT INTO posts (user_id, story, picture) VALUES('$user_id', '$story', '$picname')";
mysqli_query($connect, $query);
header( 'Location: profile.php' );
}
}
$picname将包含时间+图片名称。如果同时有多个用户上传,情况也会一样。试试以下方法:
if (!empty($_FILES['picture']))
{
$pic= $_FILES['picture']['name'];
$picname = time() . $pic;
$target= GW_UPLOADPATH . $picname;
if (move_uploaded_file($_FILES['picture']['tmp_name'], $target))
{
$query= "INSERT INTO posts (user_id, story, picture) VALUES('$user_id', '$story', '$picname')";
mysqli_query($connect, $query);
header( 'Location: profile.php' );
}
}
$picname将包含时间+图片名称。如果同时有多个用户上传,则情况相同。使用以下方法:
$query= "INSERT INTO posts (user_id, story, picture) VALUES ('$user_id', '$story', '$target')";
使用以下命令:
$query= "INSERT INTO posts (user_id, story, picture) VALUES ('$user_id', '$story', '$target')";
如果将
time()
添加为前缀,则两个图像的时间永远不会相同如果将time()
添加为前缀,则两个图像的时间永远不会相同这将不起作用,因为对time()函数的第二次调用将具有不同的值。对time()的两次调用的时间将不同。这不起作用,因为对time()函数的第二次调用将具有不同的值。对time()的两次调用的时间将不同。