是否可以使用以下内容
<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);
}
但是,如果我只上传一个文件(例如封面);由于某种原因它也被保存在配置文件中...... 如果发现这很奇怪,因为我给输入提供了不同的名称。 有人可以解释这个问题吗?
答案 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']
仅在有文件传输时包含一些数据。