• Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

Upload File

  • Автор темы Devochka
  • Дата начала
D

Devochka

Здравствуйте! PHP только начала изучать. Мне надо загрузить файл в базу. Веб-сервер - XaMPP. При тестировании кода ругается на блок
"Define File properties" и "Define content". Точно знаю, что неправильно указаны данные файла. Помогите, пожалуйста, разобраться.

<?
//connect to database
$_con = mysql_connect ("localhost", "myUseName", "myPassword");
if (!$_con){
die ('Could not connect to database!!!' . mysql_error());
}
mysql_select_db("gym", $_con);

//Define File properties
$_fileName=$_FILES['File']['File']; // "File" -- это имя загружаемого файла с локалки
$_fileSize= $_FILES['File']['903KB'];
$_tempPath= $_FILES['File']['tmp/uploaded'];
$_fileType= $_FILES['File']["application/pdf"];

//Define content
$fp = fopen($tmpName, 'r');
$content = fread($fp, filesize($tmpName));
$content = addslashes($content);
fclose($fp);

//Insert data
$query = "INSERT INTO tbl_upload (name, size, type, content ) ".
"VALUES ('$fileName', '$fileSize', '$fileType', '$content')";
mysql_query($query) or die('Error, query failed');

mysql_close($con)
?>
 
T

typak

//Define content
$fp = fopen($tmpName, 'r');
$content = fread($fp, filesize($tmpName));
$content = addslashes($content);
fclose($fp);

Ниту переменную подставляеш шоб считал
$content = fread($fp, filesize($tmpName)); здесь нужно подставить временный путь к файлу
$_tempPath а ты подстовляеш имя файла
$_fileName это просто имя там нету пути к файлу поэтому и ошибка вылетает неможет найти файл

кароче замени строки
$fp = fopen($tmpName, 'r');
$content = fread($fp, filesize($tmpName));

на
$fp = fopen($tempPath, 'r');
$content = fread($fp, filesize($tempPath));

и незнаю но вроде удали нафиг или закоментируй эту строку чота она вообще не втему
$_fileSize= $_FILES['File']['903KB'];


$_FILES['FILE'][size] у меня вроде


да если дальше будет ругаться посмотри содержимое масива $_FILE может ты неправильно указала временный каталог $_tempPath= $_FILES['File']['tmp/uploaded']; у меня поумолчанию стоит другой
кароче зделай print_r($_FILE); и посмотри где в каких ячейках находятся данные и их имена и пропиши так как надо каждой переменной свою ячейку ето так если будет ругаться

да и еще если пустой будет массив $_files то в форме поменяй type на тот который нужен для передачи данных час невспомню какой толи data/enctype чото такое
 
D

Devochka

Здорово!!! У меня все получилось. Правда код пришлось весь перелопатить. Я поменяла все, что ты мне говорил и перепроверила синтаксис, правильность переменных и форму для загрузки файла (присвоила айдишники полям) -- ошибок куча! Вот в итоге какой код получился
<?
if(isset($_POST['upload']))
{
//connect to database
$_con = mysql_connect ("localhost", "мойПользователь", "мойПароль");
if (!$_con){
die ('Could not connect to database!!!' . mysql_error());
}
mysql_select_db("моя база", $_con);

//Define File properties
$fileName=$_FILES['uploaded_file']['name'];
$tempPath= $_FILES['uploaded_file']['tmp_name'];
$fileType= $_FILES['uploaded_file']["type"];
$fileSize= $_FILES['uploaded_file']["size"];

//Define content
$fp = fopen($tempPath,'r');
$content = fread($fp, filesize($tempPath));
$content = addslashes($content);
fclose($fp);
//Insert data
$query = "INSERT INTO tbl_моя_таблица (name, size, type, content ) ".
"VALUES ('$fileName', '$fileSize', '$fileType', '$content')";
mysql_query($query) or die('Error, query failed');
mysql_close($_con);
}
?>
Спасибо большое!!!
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!