一种形式的{2个输入文件

时间:2016-03-11 21:50:25

标签: php html

是否可以使用以下内容

<form id="uploadForm" action="" method="post" enctype="multipart/form-data">
<p>Upload File 1</p>
<input type="file" name="profile"/>
<p>Upload File 2</p>
<input type="file" name="cover"/>
<input type="submit" value="Submit" />
</form>

然后我有一些php脚本看起来像:

if (empty($_POST['save']) === false) {

// FOR PROFIL CHANGE
if (isset($_FILES['profile']) === true){
$allowed= array('jpg', 'jpeg', 'png', 'bmp');

$file_name = $_FILES['profile']['name']; //name of the file
$file_exts = explode('.', $file_name); // extension of the file
$file_extn = strtolower(end($file_exts)); //inlowercase
$file_temp = $_FILES['profile']['tmp_name'];
$id = $user_data['id'];
change_image2($id, $file_temp, $file_extn);
}
// FOR COVER CHANGE
if (isset($_FILES['cover']) === true){
$allowed= array('jpg', 'jpeg', 'png', 'bmp');

$file_name = $_FILES['cover']['name']; //name of the file
$file_exts = explode('.', $file_name); // extension of the file
$file_extn = strtolower(end($file_exts)); //inlowercase
$file_temp = $_FILES['cover']['tmp_name'];
$id = $user_data['id'];
change_image3($id, $file_temp, $file_extn);

}

但是,如果我只上传一个文件(例如封面);由于某种原因它也被保存在配置文件中...... 如果发现这很奇怪,因为我给输入提供了不同的名称。 有人可以解释这个问题吗?

2 个答案:

答案 0 :(得分:0)

使用print_r($_FILES)检查仅上传一个文件时收到的数据。

我认为无论是否使用相应的$_FILES['profile']元素上传文件,我都会设置<INPUT>。您应该检查$_FILES['profile']['name']是否包含文件名或是否为空。

您还必须使用is_uploaded_file()(和move_uploaded_file())与$_FILES['profile']['tmp_name']来处理该文件。

is_uploaded_file()是问题的唯一authoritative answer&#34;用户是否使用此<input>控件上传了文件?&#34;

// FOR PROFIL CHANGE
if (! empty($_FILES['profile']['name'])
     && is_uploaded_file($_FILES['profile']['tmp_name'])){

    // ... process the file ...

答案 1 :(得分:0)

将您的情况从if (isset($_FILES['profile']) === true){更改为if (strlen($_FILES['profile']['tmp_name']) > 0){。 始终会$_FILES['profile'],但$_FILES['profile']['tmp_name']仅在有文件传输时包含一些数据。