Как восстановить загруженные файлы с помощью php - PullRequest
0 голосов
/ 31 августа 2011

Хорошо.Я ищу на этом сайте с 24 августа 2011 г. (не так уж важно) способ отображения файлов, которые были загружены пользователем.У меня есть форма на стороне администратора, и все работает нормально.У меня также есть таблица, отображающая все, что пользователь заполнил в форме, которая также работает.Но я не могу просмотреть файл или его имя в таблице.

Моя таблица базы данных имеет основной идентификатор auto_increment int (11) без знака.

Вот код, который я написал:

//This gets all the other information from the form 
$company=$_POST['company']; 
$location=$_POST['location'];
$pic=($_FILES['userfile']['name']);

$query = "INSERT INTO user_DB VALUES ('','$company', '$location', '$userfile' )";

//target to the path of my files
$target_path = "uploads/post_id/";
if(!is_dir($target_path)) mkdir($target_path);
$uploadfile = $target_path . basename($_FILES['userfile']['name']);

//Move the uploaded file to $taget_path
(move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile));

В форме, которую вы заполняете, у меня есть следующее:

<tr>
<td><label for="company_name">Company Name</label></td>
<td><input type="text" name="company" id="company" value="" size="38" /></td>
</tr>
<tr>
<td><label for="location">Location</label></td>
<td><input type="text" name="location" id="location" value="" /></td>
</tr>
<tr>
<td>Upload a File:</td>
<td><input name="userfile" id="userfile" type="file" /></td>
</tr>

Таблица, которая находится во внешнем интерфейсе и отображает результаты запроса, выглядит следующим образом, просто файл feild.

echo "<td>";
echo "<a href=../admin/uploads/post_id/> $row'userfile'</a>";
echo "</td>";

Итак, как вы можете видеть, я пытаюсь получить как имя файла, так и сам файл.Если это pdf / jpg / doc, я смогу просмотреть / скачать его, когда нажму на ссылку.

Идеи муравья ...

Ответы [ 4 ]

5 голосов
/ 31 августа 2011

Несколько предложений о том, что вы можете изменить, чтобы это заработало.

1. Загрузить форму

Как выглядит тэг формы? Не забудьте включить параметр enctype, как указано ниже:

<form type="post" action="" enctype="multipart/form-data">
    ...
</form>

2. * 1009 санитарная обработка * $company = mysql_real_escape_string($_POST['company']); $location = mysql_real_escape_string($_POST['location']); $pic = mysql_real_escape_string($_FILES['userfile']['name']); Приведенные выше строки являются первым шагом в предотвращении атак с использованием SQL-инъекций. 3. SQL-запрос

$userfile не существует, поскольку вы фактически присвоили имя файла $pic, поэтому ваш запрос должен выглядеть следующим образом:

$query = "INSERT INTO user_DB 
          VALUES ('','$company', '$location', '$pic')";

4. HTML-вывод

Теперь для ссылки на файл в выходной таблице:

echo "<td>";
echo "<a href=" . $target_path . basename($row['userfile']) . ">
         {$row['userfile']}</a>";
echo "</td>";
2 голосов
/ 31 августа 2011

Что-то очень простое, что вы, возможно, пропустили, это форма enctype.Многие начинающие делают это.Так что просто проверьте, есть ли у вас атрибут enctype в форме.

<form enctype="multipart/form-data">

Только если у вас есть это, вы можете загружать файлы через свои формы.Еще одно место, где вы можете ошибиться, это

$query = "INSERT INTO user_DB VALUES ('','$company', '$location', '$userfile' )";

. Вы сохраняете имя файла в переменной с именем $ pic, но здесь вы дали $ userfile, поэтому попробуйте изменить его на $ pic.

2 голосов
/ 31 августа 2011

Я думаю, что должно заменить это

$query = "INSERT INTO user_DB VALUES ('','$company', '$location', '$userfile' )";

с

$query = "INSERT INTO user_DB VALUES ('','$company', '$location', '$pic' )";
0 голосов
/ 27 февраля 2014

вы можете использовать один столбец как auto_increament

при добавлении нового пользователя вы можете получить сумму уже зарегистрированных пользователей, используя этот запрос

$ qry = mysql_qyery ("выберите * из users"); и вы можете получить количество пользователей, используя

$ count = mysql_num_rows ($ qry); поэтому после этого вы вставляете нового пользователя и его ID будет

$ count1 = $ count + 1; $ id = 'F'. $ count1;

...