Не могу загрузить файл на сервер веб-сайта в php - PullRequest
0 голосов
/ 03 ноября 2019

Я использую этот код

if(isset($_POST['upload'])) {
    $file = $_FILES['file'];

    $file_name = $_FILES['file']['name'];
    $file_type = $_FILES['file']['type'];
    $file_size = $_FILES['file']['size'];
    $file_tem_loc = $_FILES['file']['tmp_name'];
    $file_store = "pdf/".$file_name;
    move_uploaded_file($file_tem_loc, $file_store);
}

для загрузки файла. Он работает на моем компьютере. Я могу скопировать PDF-файл в папку назначения, но на сервере сайта этот код не работает, я не знаю почему. Кстати, извините за мой плохой язык (:

1 Ответ

0 голосов
/ 03 ноября 2019

Вот скрипт, который я недавно разработал и который работает хорошо.

Он проверяет размер файла: любые изображения размером более 1 МБ будут отклонены, но вы можете изменить его, если хотите загружать файлы большего или меньшего размера.

Сценарий также проверяет тип файла на случай, если кто-нибудь попытается загрузить потенциально вредоносный файл. Расширение $ используется только для разрешений изображений, но я добавил для вас файлы pdf, но будьте осторожны, файлы pdf легко могут быть заражены, в то время как изображения не так уж и велики, поэтому я надеюсь, что ваше приложение / соединение надежно защищено защищенным логином.

НаконецСценарий переименовывает файл в зависимости от времени, поэтому избегает любых конфликтов имен, которые в противном случае могли бы возникнуть после загрузки нескольких файлов.

<?php
// File settings
$target_dir = "pdf/"; // Make sure you get this folder location correct, currently it is http://www.yourwebsite.com/pdf
$UploadOk = true;
$extension = array("jpeg","jpg","png","gif","pdf");
$bytes = 1024; // Change to 2048 for 2Mb or 4096 for 4Mb etc.
$KB = 1024; // Change to 2048 for 2Mb or 4096 for 4Mb etc.
$totalBytes = $bytes * $KB;

// Grab file
if (isset($_FILES['upload']['name'])) {
$total_files = count($_FILES['upload']['name']);

// Check file size   
if($_FILES["upload"]["size"] > $totalBytes) {
$UploadOk = false;
echo "<script>alert('Error: File must be less than 1mb!')</script>"; // Change file size warning for larger files
echo "<script>window.history.back();</script>";
}

// Check file extension
$ext = strtolower(pathinfo($_FILES["upload"]["name"], PATHINFO_EXTENSION));
if(in_array($ext, $extension) == false) {
$UploadOk = false;
echo "<script>alert('Error: Images only!')</script>";
echo "<script>window.history.back();</script>";
}

// If checks passed, rename file and upload to directory
if ($UploadOk ==  true) {
$time = preg_replace('/(0)\.(\d+) (\d+)/', '$3$1$2', microtime());
$dot = ".";
$new_filename = $time.$dot.$ext;
move_uploaded_file($_FILES['upload']['tmp_name'], $target_dir . $new_filename);
}
}
?>

Если вы все еще не можете загрузить файл, несмотря на правильное расположение каталога,как уже упоминалось, проверьте разрешения владельца для рассматриваемой папки. Вы можете сделать это, перейдя в папку на своем веб-сайте с помощью программы FTP или через cPanel и щелкнув правой кнопкой мыши по соответствующей папке, чтобы проверить разрешения, 755 в порядке и разрешит загрузку.

Я бы предложил добавить этифайлы в таблицу MYSQL, чтобы на них можно было ссылаться и получать.

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