だから私はファイルを一度にアップロードできるようにするスクリプトを持っています:
<input style = "width: 90px;" name="book-image" type="file" id="image" value = "Upload">
<input style = "width: 90px;" name="book-preview" type="file" id="book" value = "Upload">
受信スクリプトは次のとおりです。画像が存在する場合、プレビュー(pdf)が存在するかどうかをテストし、2つの関数を実行して各画像とpdfをアップロードします。
if(file_exists($_FILES['book-image']['tmp_name']) || is_uploaded_file($_FILES['book-image']['tmp_name'])) {
//If there is a preview or non-free book
if((file_exists($_FILES['book-preview']['tmp_name']) || is_uploaded_file($_FILES['book-preview']['tmp_name']))) {
//valid - upload image, preview and add book
if($image = uploadBookImage() && $pdf = uploadPreviewPdf()) {
$newValues['imagefilename'] = $image;
$newValues['previewfile'] = $pdf;
if($qc->insertBook($newValues)) {
$message = "Added Book!";
} else{
$error .= "Couldn't add book";
}
}
}
}
$ qc-> insertBook($ values); データベースに値を追加します。
アップローダー機能は次のとおりです。
function uploadBookImage() {
$allowedExts = array("jpg", "jpeg", "gif", "png");
$gay = explode(".", $_FILES['book-image']['name']);
$extension = end($gay);
$target_path = "../images/books/";
$filename = $_FILES["book-image"]["name"];
$target_path = $target_path . basename($_FILES['book-image']['name']);
if ((($_FILES["book-image"]["type"] == "image/gif")
|| ($_FILES["book-image"]["type"] == "image/jpeg")
|| ($_FILES["book-image"]["type"] == "image/png")
|| ($_FILES["book-image"]["type"] == "image/pjpeg"))
&& ($_FILES["book-image"]["size"] < 2000000)
&& in_array($extension, $allowedExts)){
if (file_exists($target_path)) {
return false;
} else {
if(move_uploaded_file($_FILES['book-image']['tmp_name'], $target_path)) {
echo $filename;
return $filename;
}
}
} else {
return false;
}
}//function
function uploadPreviewPdf() {
$allowedExts = array("pdf");
$gay = explode(".", $_FILES['book-preview']['name']);
$extension = end($gay);
$target_path = '../previews/';
$filename = $_FILES['book-preview']['name'];
$target_path = $target_path . basename($_FILES['book-preview']['name']);
if((($_FILES['book-preview']['type'] == 'application/pdf'))
&& ($_FILES['book-preview']['size'] < 6000000)
&& in_array($extension, $allowedExts)) {
if(file_exists($target_path)) {
return false;
} else {
if(move_uploaded_file($_FILES['book-preview']['tmp_name'], $target_path)) {
return $filename;
}
}
} else {
return false;
}
}
問題:両方をアップロードすると、画像名の値1とPDFのファイル名がデータベースに追加されます。ただし、画像のみをアップロードすると、画像名がデータベースに追加されます
画像アップロード時のvardumpの出力:画像ファイル名を出力し、画像とpdfアップロード時のvardump出力:画像ファイル名を出力
理由はわかりません。助けてください。