我正在寻找一种方法,使用用户的id作为文件名将标签链接到个人资料图片。但是,图像的扩展名取决于用户上传时的文件扩展名。
我的问题是:如何进行测试以查看给定的图像文件名是否存在,并循环浏览图像的各种文件扩展名。
例如: 让我们说,图像命名为:1.jpg,但另一个命名为2.png。 我想在html中实现以下内容:
<img src = "' + userId + '.jpg">
这适用于第一个用户,但不适用于第二个用户。我将如何测试src的各种图像文件扩展名?
由于
答案 0 :(得分:1)
“文件扩展名”(事实上,关于“文件”名称的任何内容)都是毫无意义的。 尤其是,涉及到HTTP请求。此URL可以轻松生成图像文件:
http://www.example.com/foo.txt
了解HTTP中没有“文件”这样的东西。有请求和响应,每个请求和响应都包含标题和内容。 “文件”只是带有content-disposition
标头的响应。 “图像”是对其他标题的响应,指定它包含图像数据。
如果你不知道图片的网址,那么它可以是任何。
图像的扩展名取决于用户上传时的文件扩展名
在这种情况下,您应该在数据库中存储该信息。无论记录如何,用户配置文件的信息都将包含用户配置文件图像的URL。使用该数据构建img
元素。
存储数据或强制执行约定。如果你不这样做,那么你根本就没有这些数据。
答案 1 :(得分:0)
假设您正在使用PHP & MySql
商店上传的图片
user_data/user_id/image.png
您可以使用php mkdir()
函数创建具有用户ID
例如
mkdir("user_data/".$user_id,0777);
所以你的上传脚本就是这样的
<?php
$fileName = $_FILES['uploadedFile']['name'];
if(!file_exists("user_data/".$user_id."/")){
mkdir("user_data/".$user_id,0777);
}
move_uploaded_file($_FILES['uploadedFile']['tmp_name'],user_data/".$user_id."/");
$conn = mysqli_connect($host,$user,$pass,$db_name);//Database connection
$sql = "INSERT INTO uploads(user_id,fileName) VALUES('$user_id','$_FILES['uploadedFile']['name']'";
$query = mysqli_query($conn,$sql) or die("Unable to update to database");
?>
检索结果的脚本
<?php
$conn = mysqli_connect($host,$user,$pass,$db_name);//Database connection
$sql = "SELECT * FROM uploads";
$query = mysqli_query($conn,$sql);
$data= mysqli_fetch_array($query);
?>
<img src"user_data/<?php echo "/".$user_id."/". $data['fileName']; ?>
上面有一些变体,例如$user_id
,你设置&amp;从会话变量中获取