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

Я пытаюсь создать компонент загрузки, который сохраняет информацию о файле в таблицу БД MySQL. Моя первая проблема заключается в том, что каждый раз, когда пользователь загружает файл, в базу данных добавляются две записи.

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

Моя самая большая проблема — проблема со ссылками для просмотра загрузок. Затем, если у кого-то также есть предложение по проблеме двойной записи, это также будет оценено.

Мой код:

HTML: функция загрузки файлов — успешно загружены все переменные дважды …

  <form id="sgFileUpload" action='sg_addupload.php' target='hiddenFrame' method="POST" enctype="multipart/form-data">

<fieldset id='uploadBtnField'>

<input type="hidden" name="MAX_FILE_SIZE" value="50000000"/>

<input type='hidden' name='sgRef' id='sgRef' value='<?php echo $sgref ?>'>

<input type='file' name='searchFile' id='searchFile' multiple>

<input type='submit' name='startUpload' id='startUpload' value='Upload'></fieldset>

</form> <!-- End Form Input -->

Мой PHP: загрузка файлов в БД

if(isset($_POST['sgRef'])) {

$sgref=$_POST['sgRef'];

}

$fileName = $_FILES['searchFile']['name'];

$fSize = $_FILES['searchFile']['size'];
$fType = $_FILES['searchFile']['type'];

$target = "../bms/uploads/";
$fileTarget = $target.$fileName;
$tempFileName = $_FILES["searchFile"]["tmp_name"];
//$docType = $_POST['docType'];
$result = move_uploaded_file($tempFileName,$fileTarget);

if ($result) {

//run DB Connection code...

//Writes the information to the database
$sql="INSERT sg_uploads(sgref,file,type,size,content,doctype) VALUES('$sgref','$fileName','$fType','$fSize','$fileTarget','Other')";

$conn->query($sql);

if($conn->query($sql)) {
echo 'Your file <html><b><i>'.$fileName.'</i></b></html> has been successfully uploaded!';
} else {
//Gives an error if its not
echo "Sorry, there was a problem uploading your file.";
}//Free the result variables.
$sql->free();$result->free();//Close the Database connection.
$conn->close();}//End If Statement.

КОД PHP: для отображения ссылок из БД (КОД PHP ДЛЯ ПОЛУЧЕНИЯ УСПЕШНЫЙ)

    <?php
while ($row = $result->fetch_array()) {

echo "<tbody>";
echo "<tr>";
echo "<td>" . "<a href=".$row['content']."' >".$row['file']."</a>". "</td>";
echo "<br/>";
echo "<br/>";
}//end while.
echo "</tr>";
echo "</tbody>";

$filename = $row[0];
echo "<p></p>";?>

Вся помощь приветствуется! Спасибо!

ПРИМЕЧАНИЕ: столбец «file» в базе данных является типом данных «blob».

1

Решение

«@Fred, да, это была проблема с каталогом. После исправления этой проблемы я смог успешно связать страницу и просмотреть ее. Если вы укажете два предложения в качестве ответа, я отмечу ваш ответ как правильный ответ. Спасибо вы!»

Как я сказал в комментариях:

Повторяющиеся записи вызваны $conn->query($sql); if($conn->query($sql))

где было два случая query() использовался.

Вы можете просто использовать условное выражение и опустить $conn->query($sql);,

Что касается вопроса о пути, в комментариях также указывалось, что путь к папке не был правильно проиндексирован.


Примечания:

Вы в настоящее время открыты для инъекции SQL. Лучше всего использовать подготовленное заявление.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]