我正在构建一个允许用户将图像上传到数据库的表单,作为眼科医生应用程序的一部分。我的问题涉及包含这些图像信息的表(shot
表),该表的列是:
编号 |访问 ID |患者编号 | Img_文件名 |缩小图像文件名 |子目录 | SubSubDir|
因此该表仅存储有关图像的信息。图像文件以特定约定命名。例如,0000288964r.jpg
是 Img_filename
列中的文件名。下一列中的文件名 Shrunk_img_filename
除了 r
被替换为 s
并且格式为 .bmp
。例如,0000288964s.bmp
。文件名中的这些数字源自此表的 ID
列,根据 ID
的位数,在开头添加了可变数量的零。
此外,在我的表单中,我有一个文件上传输入,用户可以在其中选择要上传的图像。这就是我的问题所在......
我想使用存储在我的数据库中的相同文件名作为这些图像上传到我的服务器时的文件名,但我不想手动通过数据库查找图像的下一个可用 ID,并在选择图像进行上传时重命名图像。
我真的不知道这是否可行,但我很想听听有关如何使这项工作或任何类型的解决方法的任何想法。谢谢。我将在下面包含我的代码(由于用于创建我的文件名的 2 个 CASE 语句,我的插入语句长得离谱,所以我只包含了它的要点)
<?php
include('db.php');
if (isset($_FILES['myfile']) && isset($_GET['id']))
{
$filename = $_FILES['myfile']['name'];
$filetype = $_FILES['myfile']['type'];
$filesize = $_FILES['myfile']['size'];
$filetmp = $_FILES['myfile']['tmp_name'];
$fileerror = $_FILES['myfile']['error'];
$id = $_GET['id'];
if ( $fileerror > 0){
die("Error Uploading File Code $fileerror.");
}
else
{
move_uploaded_file($filetmp,"C:/wamp/www/vixer/images/".$filename);
echo "Upload Complete!";
}
$sqlvisit="INSERT INTO shot (VISIT_ID, PATIENT_ID, IMG_FILENAME, SHRUNK_IMG_FILENAME, SUBDIR, SUBSUBDIR, IMG_FILE_FORMAT, EYE) SELECT (SELECT max(ID) from visit where visit.patient_id =" . $id ."), " . $id . ", (SELECT CASE blah blah), (SELECT CASE blah blah), '9', '1', '124', '0' FROM SHOT WHERE shot.patient_id = " . $id . "";
mysql_query($sqlvisit);
}
?>
<form id="form3" action="" method="post" enctype="multipart/form-data" style="display:none;width:300px;background-color: #FFFFFF;">
Upload Image(s)..<input type="file" name="myfile"><br />
<input type="submit">
</form>
最佳答案
我想我基本上按照 prodigitalson 的建议做了...
我 include()
调用一个 php 文件来插入一个新镜头(与我的问题相同的查询)
然后我 include()
再次调用另一个 php 文件,它选择我刚刚插入的这个新行,并将结果行的每一列分配给变量,然后分配给 session 变量
然后在我的脚本中使用 session 变量,该脚本使用图像文件名
将图像上传到我的服务器,并根据我的缩小图像文件名
创建缩略图。
关于PHP mysql Insert/Upload images to database/server 命名问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15364695/