【发布时间】:2013-03-12 14:59:11
【问题描述】:
我正在构建一个表单,允许用户将图像上传到数据库中,作为眼科医生应用程序的一部分。我的问题涉及包含这些图像信息的表(shot 表),该表的列是:
ID | Visit_ID | Patient_ID | Img_Filename | Shrunk_img_filename | Subdir | SubSubDir|
因此该表仅存储有关图像的信息。图像文件以特定约定命名。例如,0000288964r.jpg 是 Img_filename 列中的文件名的样子。下一列中的文件名 Shrunk_img_filename 相同,只是 r 被替换为 s 并且格式为 .bmp。例如,0000288964s.bmp。文件名中的这些数字来自该表的ID 列,根据ID 的位数,在开头添加可变数量的零。
另外,在我的表单中,我有一个文件上传输入,用户可以在其中选择要上传的图像。这就是我的问题所在..
我想使用相同的文件名,如上所示,这些文件名存储在我的数据库中,作为这些图像上传到我的服务器时的文件名,但我不手动通过数据库查找图像的下一个可用 ID,并在选择要上传的图像时重命名图像。
我真的不知道这是否可能,但我很想听听有关如何使这项工作或任何解决方法的任何想法。谢谢。我将在下面包含我的代码(由于用于创建我的文件名的 2 个 CASE 语句,我的插入语句非常长,所以我只包含它的 jist)
<?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>
【问题讨论】:
-
我认为没有一种可靠的方法可以做到这一点,而无需先创建记录,以便您获得一个 ID,然后移动文件并使用文件名更新记录。
-
:-(我认为你是对的..但这为我指明了正确的方向。