これがフォームです
_form action="index.php" method="POST" enctype="multipart/form-data" >
<input type="file" name="image[]" multiple="multiple">
<input type="submit" value="upload">
</form>
_
if(!empty($_FILES['image'])){
の場合にのみコードを実行しようとしていますが、何らかの理由で、ファイルを送信せずに[送信]をクリックしただけで配列が空になりません。
それが助けになるなら、これが残りのコードです、ありがとう。
_<html>
_
画像のアップロード
_ <form action="index.php" method="POST" enctype="multipart/form-data" >
<input type="file" name="image[]" multiple="multiple">
<input type="submit" value="upload">
</form>
<?php
include 'connect.php';
if(!empty($_FILES['image'])){
echo $_FILES['image']['error'];
$allowed = array('jpg', 'gif', 'png', 'jpeg');
$count = 0;
foreach($_FILES['image']['name'] as $key => $name){
$image_name = $name;
$tmp = explode('.', $image_name);
$image_extn = strtolower(end($tmp)); //can only reference file
$image_temp = $_FILES['image']['tmp_name'][$count];
$filesize = filesize($_FILES['image']['tmp_name'][$count]);
$count = $count +1;
if(count($_FILES['image']['tmp_name']) > 5){
echo "You can upload a maximum of five files.";
break;
}
else if(in_array($image_extn, $allowed) === false){
echo $name." is not an allowed file type<p></p>";
}
else if($filesize > 1024*1024*0.3){
echo $name." is too big, can be a maximum of 3MB";
}
else{
$image_path = 'images/' . substr(md5($name), 0, 10) . '.' . $image_extn;
move_uploaded_file($image_temp, $image_path);
mysql_query("INSERT INTO store VALUES ('', '$image_name', '$image_path')") or die(mysql_error());
$lastid = mysql_insert_id();
$image_link = mysql_query("SELECT * FROM store WHERE id = $lastid");
$image_link = mysql_fetch_assoc($image_link);
$image_link = $image_link['image'];
echo "Image uploaded.<p></p> Your image: <p></p><a href = $image_link>$image_path</a>";
}
}
}
else{
echo "Please select an image.";
}
?>
_
使用 is_uploaded_file
PHP代わりに関数:
if(is_uploaded_file($_FILES['image']['tmp_name'])) {
//code here
}
こうやって $_FILES
配列は何もアップロードされていないときのように見えます
Array ( [image] => Array ( [name] => [type] => [tmp_name] => [error] => 4 [size] => 0 ) )
したがって、空になることはありません。
エラーコード4[error] => 4
は、ファイルがアップロードされておらず、エラーcode 0
はエラーがなく、ファイルがアップロードされたことを示しているため、確認できます
if($_FILES['image']['error']==0) {
// file uploaded, process code here
}
これが 別の答え SOです。
まず最初にPHPマニュアルを調べてください。なぜなら-あなたはその問題を抱えた最初の人ではないからです-解決策が書かれています そこに :
フォームにアップロードするファイルが選択されていない場合、PHPは、
$_FILES['userfile']['size']
を0として返し、$_FILES['userfile']['tmp_name']
をnoneとして返します。
したがって、image
要素のファイルが送信されているかどうかを実際に確認したい場合は、次のことを確認してください。
$noFile = $_FILES['image']['size'][0] === 0
&& $_FILES['image']['tmp_name'][0] === '';
はい、それは簡単です。
使用したテスト:
empty($_FILE);
フォーム全体が送信されたかどうかのみが通知されます。したがって、完全な例:
$submitted = empty($_FILE);
if ($submitted) {
$noFile = $_FILES['image']['size'][0] === 0
&& $_FILES['image']['tmp_name'][0] === '';
if ($noFile) {
...
}
}
チェック値がnullではありません:
in_array(!null,$_FILES['field_name']['name'])
if($_FILES['image']['error'] === UPLOAD_ERR_OK) {
// Success code Goes here ..
}
UPLOAD_ERR_OK
エラーがない場合は値0を返し、ファイルは正常にアップロードされました。
私はこの問題に複数のファイル入力で直面しました。ファイルが選択されているかどうかを確認するために機能していることがわかったのは次のとおりです。
<?php
$size_sum = array_sum($_FILES['img']['size']);
if ($size_sum > 0) {
// at least one file has been uploaded
} else {
// no file has been uploaded
}
?>
http://php.net/manual/en/features.file-upload.post-method.php
フォームにアップロードするファイルが選択されていない場合、PHPは$ _FILES ['userfile'] ['size']を0として返し、$ _ FILES ['userfile'] ['tmp_name' ]なしとして。
ユーザーがアップロードするファイルを選択しなかった場合でも、「ファイル」アップロードフィールドごとに配列エントリを取得します。
if(!empty($_FILES['image']['name'][0]) || !empty($_FILES['image']['name'][1]) ||
!empty($_FILES['image']['name'][2]))
または
for($1=0;$i<count($_FILES['image']);$i++){
if(!empty($_FILES['image']['name'][$i])){
// do something
}
}