@invaest

В чем неисправность?

Пишу приложение (курсовая) для хранения, загрузки, поиска и добавления файлов, также есть регистрация и авторизация через сессии .
Есть php скрипт рабочий (его функции загрузка файла на сервер и добавления путей файлов бд). Проблема в том что он не работает в этом приложении в качестве ошибки выдает файл не загружен. Скрипт писался конкретно для для этого приложения и работает если его запустить отдельно .

<html>
<head>
    <link rel="stylesheet" type="text/css" href="csstyle/style.css">
    <link rel="stylesheet"  type="text/css" href="csstyle/storage.css">
    <link rel="stylesheet" type="text/css" href="csstyle/add.css">
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
<a href='exit.php'>Выход</a><div id ="itext"><form method='post' action='search.php'><fieldset><input class="search" type ="text" name="search" placeholder="Поиск"><input class="getdat" id ="getdat" type="submit" value="Поиск" name="get"/></fieldset></form></div><div class="add"><form enctype="multipart/from-data" action='upload.php' method='post'><input type="hidden" name="MAX_FILE_SIZE" value="104857600" /><fieldset><input class="inputn" type ="text" name="namef" value=dima><input class="inputn" name="tags" type="text" placeholder="доп. информация"><input class="inputn" name="data" type="date" placeholder="Дата"><input class="inputn" name ="upfile" type="file"><input class="input" type="submit" value="Добавить"></fieldset></form></div></body>
</html>


upload.php
<?php
var_dump($_FILES);
include('bd.php');
error_reporting(E_ALL);
ini_set('display_errors', true);

if(isset($_FILES['upfile']))
{
  $dir = __DIR__.'/.upload/';
  
  if(!is_dir($dir))
    mkdir($dir, 0777);
    
    
  $data   = $_POST['data'];
  $namef  = $_POST['namef'];
  $tags   = $_POST['tags'];

  $upfile = $_FILES["upfile"]["tmp_name"];
  $upfile_name = $_FILES["upfile"]["name"];
  $upfile_path = $dir . $upfile_name;
    
  if(move_uploaded_file($upfile, $upfile_path))
  {
    $lnk = 'http://'.$_SERVER['HTTP_HOST'].'/.upload/'.$upfile_name; 
    
    $sl = "INSERT INTO `ufiles` (`data`,`namef`,`tags`,`link`) VALUES('$data','$namef','$tags','$lnk')";
    
      if(mysql_query($sl)) 
      {
    echo "<p>В базу внесено!</p>";
      }
      else
      {
   
    echo "Error! ----> ". mysql_error();
      }
       
     echo $lnk;
     
  }
  else
    echo 'Файл не сохранен!';
}
else
  echo 'Файл не загружен!';
  • Вопрос задан
  • 2407 просмотров
Решения вопроса 1
@vdem
Очевидно, $_FILES['upfile'] не установлен. Может быть, Вы подключаете этот скрипт не только когда происходит submit, а вообще? Установлен ли атрибут формы enctype="multipart/form-data"? Установлен ли атрибут method в POST (а не GET)? Присутствует ли <input type="hidden" name="MAX_FILE_SIZE" value="104857600" /> сразу после <form>?
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@maxyc_webber
Web-программист
почитайте про дебаг, про print_r, var_dump
они помогут вам найти причину

Посмотрите какие данные приходят на сервер, и как они обрабатываюся

посмотрите настройки формы, все ли указаны данные
Ответ написан
Комментировать
shcherbanich
@shcherbanich
Программист
проблема в настройках php.ini , возможно Вы загружаете файл большего размера, чем можно на сервере

UPD. Можно установить и в htaccess
например так:
php_value upload_max_filesize 20M
php_value post_max_size 20M
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы