По какой-то причине моя форма загрузки PDF не работает последовательно, у меня есть этот код:
<?php if($_POST["submit"] == "Add PDF to Comm and Special Projects") { $addsubp = $_POST["addsubp"]; $addsubp_name = $_POST["addsubp_name"]; $commuploadedfile = $_FILES['uploadedfile']['name']; $sqldoc = "INSERT INTO projects_links (pid, display_name, link) VALUES ('".$addsubp."','".$addsubp_name."','".$commuploadedfile."')"; mysql_query($sqldoc) or die(mysql_error()); echo "<BR>"; $target_path = "D:\\Hosting\\69903\\html\\pdfs\\comm\\"; $target_path = $target_path . basename( $_FILES['uploadedfile']['name']); if(move_uploaded_file($_FILES['uploadedfile']['tmp_name'], $target_path)) { echo "<br>The file ". basename( $_FILES['uploadedfile']['name']). " has been uploaded<br>"; } else{ echo "<br>There was an error uploading the file, please try again.<br>"; } } ?> <form method="post"> Add PDF to Project for Committees and Special Projects <br>Choose Project<select name="addsubp"><?php $query = "SELECT projects.* FROM projects"; $showresult = mysql_query($query); $csp_c = 1; while($buyarray = mysql_fetch_assoc($showresult)) { echo "<option value=".$buyarray['id'].">".$buyarray["pname"]."</option>"; } ?></select><br> Choose Display Name for PDF <input type="text" name="addsubp_name" /> <Br> Choose PDF: <input name="uploadedfile" type="file" /> <Br> <input type="submit" value="Add PDF to Comm and Special Projects" name="submit" /> </form>
Я убедился, что приложение имеет права на запись в каталог «comm». У меня есть godaddy, и я использовал файловый менеджер, чтобы убедиться в этом. Раньше у меня были проблемы с разрешениями в этом проекте, поэтому я знаю, что это не случай. Он продолжает печатать
Произошла ошибка при загрузке файла, повторите попытку.
Он вообще не пытается загрузить какой-либо PDF-файл, что я делаю неправильно? благодаря!
У вас могут быть проблемы с разрешениями, но для загрузки файлов ваш тег формы должен содержать соответствующий атрибут enctype.
<form enctype="multipart/form-data" method="POST">
и определение предела размера файла также является хорошей идеей:
<input type="hidden" name="MAX_FILE_SIZE" value="1000000" />
попробуйте проверить сообщение об ошибке загрузки: http://php.net/manual/en/features.file-upload.errors.php
Ваш код слепо предполагает, что загрузка файла выполнена успешно. По крайней мере, вы должны иметь что-то вроде
if ($ _FILES ['uploadedfile'] ['error'] === UPLOAD_ERR_OK) {… обрабатывать загрузку}
Ваш код уязвим для SQL-инъекции. Вы не избегаете ни одного из трех значений, которые вы вставляете в базу данных
Вы создаете запись базы данных, прежде чем убедиться, что файл был успешно перемещен в целевой каталог. Что произойдет, если файл не может быть написан по какой-либо причине (как теперь с вашей проблемой)? База данных скажет, что она есть, файловая система скажет, что это не
Вы не проверяете конфликты файлов. Если две отдельные загрузки отправляют «file.txt», вторая загрузка перезапишет первую.
Вы храните файлы с предоставленным пользователем именем, которое находится под контролем пользователя. Если этот файл доступен в Интернете, любой, у кого есть доступ к вашей форме загрузки, может загружать все, что захочет (например, файл php), и сервер с радостью выполнит его для них.