O具有html5表单,该表单允许上传多个图像。我希望将图像保存在上载文件夹中,并将文件名存储在数据库中。数据库中的每一列都可以包含更多图像。因此,我创建了一个新表allegato
,在其中保存图像名称和它代表的问题ID。我还有用于报告的segnalazione
表。因此,几张图片引用了一份报告。
我可以将多个图像上传到服务器,但是我不知道为每个图像保存他的名字,以便在db表中关联其信号。
在segnalazione.php
中,我具有上载报告的功能。在文件末尾,我可以将报告关联到“附件”表,但是我不知道如何为同时加载的每个文件添加链接。
function create()
{
$query=" INSERT INTO ". $this->table_name ." SET
nome=:nome, descrizione=:descrizione, contatto=:contatto, tipo_segnalazione=:tipo_seg, indirizzo=:via1, ip=:ip, tracking=:track";
$stmt = $this->conn->prepare($query);
// bind values
$stmt->bindParam(":nome", $this->nome);
$stmt->bindParam(":descrizione", $this->descrizione);
$stmt->bindParam(":contatto", $this->contatto);
$stmt->bindParam(":tipo_seg", $this->tipo_seg);
$stmt->bindparam(":via1",$this->via1);
$stmt->bindparam(":ip",$this->ip);
$stmt->bindparam(":track",$this->tracking);
if($stmt->execute()){
$stmt1 = $this->conn->prepare("SELECT id FROM coratocivile where tracking=:track");
$stmt1->bindparam(":track",$this->tracking);
$stmt1->execute();
$id = $stmt1->fetch();
$id1= $id['id'];
$stmt2 = $this->conn->prepare("insert into allegato set id_segnalazione='$id1'");
$stmt2->execute();
}else{
return false;
}
return true;
}
我上传图片的index.php中的有:
if($_POST){
$segnalazione->descrizione=$_POST['descrizione'];
$segnalazione->contatto=$_POST['contatto'];
$segnalazione->nome=$_POST['nome'];
$segnalazione->tipo_seg=$_POST['tipseg'];
$segnalazione->ip=$ip = $_SERVER['REMOTE_ADDR'];
$segnalazione->via1=$_POST['via'];
$segnalazione->tracking=time();
$file_dir = "uploads";
function compress_image($source_url, $destination_url, $quality) {
if($source_url==NULL)
{
echo "<div class='alert alert-danger'> Caricamento allegato fallito. Assicurati di aver allegato una foto o un video!</div>";
return null;
}
else {
$info = getimagesize($source_url);
if ($info['mime'] == 'image/jpeg')
$image = imagecreatefromjpeg($source_url);
elseif ($info['mime'] == 'image/gif')
$image = imagecreatefromgif($source_url);
elseif ($info['mime'] == 'image/png')
$image = imagecreatefrompng($source_url);
imagejpeg($image, $destination_url, $quality);
return $destination_url;
}
}
if (isset($_POST["singlebutton"])) {
for ($x = 0; $x < count($_FILES['file']['name']); $x++) {
$file_name = time() . $_FILES['file']['name'][$x];
$file_tmp = $_FILES['file']['tmp_name'][$x];
/* location file save */
$file_target = $file_dir . DIRECTORY_SEPARATOR . $file_name;
try {
if( $filename = compress_image($file_tmp, $file_target, 30) && $segnalazione->create()){
echo "<div class='alert alert-success'> Segnalazione inviata. </div>";
}
else echo "<div class='alert alert-danger'> Segnalazione non inviata. Assicurati di aver compilato tutti i campi corretttamente. </div>";
} catch (Exception $e) {
echo "<div class='alert alert-danger'> Caricamento allegato fallito </div>";
}
}
}
}
?>