2016-03-11 4 views
0

Можно ли что-то вроде следующего2 входных файлов в одной форме

<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

'ashx' является php? выглядит как .net –

+0

выглядит как проблема в методах 'change_image2' или' change_image3' –

+0

@Lashane Игнорировать действие = "upload.ashx"; его действие = ""; Я отредактировал извините – Jackymamouth

ответ

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 на вопрос: «сделал пользователь загрузил файл, используя этот <input> контроль?»

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

    // ... process the file ... 
0

Изменение состояния из if (isset($_FILES['profile']) === true){ в if (strlen($_FILES['profile']['tmp_name']) > 0){. Всегда будет $_FILES['profile'], но $_FILES['profile']['tmp_name'] содержит некоторые данные, только если есть передача файлов.

Смежные вопросы