Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.92/13: Рейтинг темы: голосов - 13, средняя оценка - 4.92
4 / 4 / 5
Регистрация: 09.08.2012
Сообщений: 225

Аякс отправка файла Warning: file_get_contents() [function.file-get-contents]: Filename cannot be empty in

14.08.2015, 21:49. Показов 2755. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте.

Такая проблема при попытке отправки файла через форму аяксом появляется ошибка:

Code
1
Warning: file_get_contents() [function.file-get-contents]: Filename cannot be empty in N:путь on line 37

Далее на почту приходит файл с названием: Часть 1.2 0 байт

Если из формы убрать class="review" то всё нормально приходит и ошибки нет в чём может быть дело помогите товарищи.

HTML5
1
2
3
4
5
6
7
8
9
10
<h1>Форма связи</h1>
<form action="attach_send.php" class="review" method="POST" enctype="multipart/form-data">
    Ваше имя:<br>
    <input name="name" type="text">
    <p> Ваш отзыв:<br>
    <textarea name="text" cols="26" rows="4"></textarea><p>
    Файл: <input type="file" name="uploadfile" size="28"/><p>
    <input name="add" type="submit" value="Отправить" >
</form>
<div class="review_result"></div>
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script type='text/javascript'>
$(function(){
    $('.review').submit(function(e){
        e.preventDefault();
        var m_method=$(this).attr('method');
        var m_action=$(this).attr('action');    
        var m_data=$(this).serialize();
        $.ajax({
            type: m_method,
            url: m_action,
            data: m_data,
            success: function(result){
            $('.review_result').html(result);
            }
        });
    });
});
</script>

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
$name = $_POST['name'];
$text = $_POST['text'];
$ip = $_SERVER["REMOTE_ADDR"];
 
function clean($value = "") {
    $value = trim($value);
    $value = htmlspecialchars($value);
    
    return $value;
}
function check_length($value = "", $min, $max) {
    $result = (mb_strlen($value) < $min || mb_strlen($value) > $max);
    return !$result;
}
$name = clean($name);
$text = clean($text);
 
if(!empty($name) && !empty($text)) {
    
    if(check_length($name, 2, 50) && check_length($text, 2, 5000)) {
        
        $res = mysql_query('SELECT ip FROM reviews WHERE ip="'.$ip.'"');
        if (mysql_num_rows($res) == 0) {
        
            $result = mysql_query("INSERT INTO reviews (name, text, date, ip) VALUES ('".$name."', '".$text."', '".date('Y-m-d')."', '".$ip."')");
            if($result == true) {
                echo '<div class="success">Ваш отзыв успешно добавлен в базу данных</div>';
                
        $to = 'myemail@gmail.com';
        $subject = 'Новый отзыв';
 
        $message = strip_tags($_POST['text']);
 
        $attachment = chunk_split(base64_encode(file_get_contents($_FILES['uploadfile']['tmp_name'])));
        $filename = $_FILES['uploadfile']['name'];
 
        $boundary =md5(date('r', time())); 
        
        $headers = "From: ".$_SERVER['HTTP_HOST'].'<'.$to.'>'."\r\nReply-To: ".$_SERVER['HTTP_HOST'].'<'.$to.'>'."";
        $headers .= "\r\nMIME-Version: 1.0\r\nContent-Type: multipart/mixed; boundary=\"_1_$boundary\"";
 
        $message="This is a multi-part message in MIME format.
 
--_1_$boundary
Content-Type: multipart/alternative; boundary=\"_2_$boundary\"
 
--_2_$boundary
Content-Type: text/plain; charset=\"utf-8\"
Content-Transfer-Encoding: 7bit
 
$message
 
--_2_$boundary--
--_1_$boundary
Content-Type: application/octet-stream; name=\"$filename\" 
Content-Transfer-Encoding: base64 
Content-Disposition: attachment 
 
$attachment
--_1_$boundary--";
 
        mail($to, $subject, $message, $headers);
    
            }
            else {
                echo '<div class="error">Ваш отзыв не был добавлен, пожалуйста обратитесь за помощью к системному администратору.</div>';
            }
            
        }
        else {
             echo '<div class="error">Вы уже оставляли ранее отзыв.</div>';
        }
 
    } else { 
        echo '<div class="error">Введенные данные некорректные!</div>';
    }
} else { 
    echo '<div class="error">Заполните пустые поля!</div>';
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
14.08.2015, 21:49
Ответы с готовыми решениями:

Вылетает ошибка! Warning: file_get_contents(main.tpl) [function.file-get-contents]: failed to open stream: No such file or directory in /home/u6958797
В чем может быть проблема &lt;?php require_once &quot;config_class.php&quot;; require_once &quot;article_class.php&quot;; require_once...

file get contents ошибка при отсутствии файла
В общем мне нужно file_get_contents (либо другим способом) получить содержимое текстового файла с другого сайта. $fp =...

Ошибка file-put-contents: не берет название файла из массива
Привет всем! Скачиваю подборку статей в папку, в массиве $urla_array адреса для скачивания, а в массиве $postname_array -названия...

3
 Аватар для alexsamos33
669 / 640 / 335
Регистрация: 26.04.2014
Сообщений: 2,122
15.08.2015, 11:08
Цитата Сообщение от belltone Посмотреть сообщение
Если из формы убрать class="review" то всё нормально приходит и ошибки нет в чём может быть дело
А дело тут как раз в том, что если класс убрать, форма будет отправлена обычным способом, а если класс не убирать, то через ajax. А как мы знаем, через ajax файлы не отправляются, для отправки формы с файлами нужен другой javascript код.
Вариант №1: использовать скрытый iframe,
Вариант №2: использовать специальный объект FormData, в который добавлять файлы.
1
Эксперт PHP
3899 / 3237 / 1353
Регистрация: 01.08.2012
Сообщений: 10,912
15.08.2015, 11:19
alexsamos33, какой метод лучше, кроссбраузерней? Возможно в ближайшем будущем возникнет похожая задача.
0
4 / 4 / 5
Регистрация: 09.08.2012
Сообщений: 225
15.08.2015, 11:49  [ТС]
Откопал что-то похожее вроде отправляет файл нормально говорят все браузеры поддерживает я не проверял если кому надо выкладываю:

JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
$(document).ready(function()
{
 
 
 function getDoc(frame) {
     var doc = null;
     
     // IE8 cascading access check
     try {
         if (frame.contentWindow) {
             doc = frame.contentWindow.document;
         }
     } catch(err) {
     }
 
     if (doc) { // successful getting content
         return doc;
     }
 
     try { // simply checking may throw in ie8 under ssl or mismatched protocol
         doc = frame.contentDocument ? frame.contentDocument : frame.document;
     } catch(err) {
         // last attempt
         doc = frame.document;
     }
     return doc;
 }
 
$("#multiform").submit(function(e)
{       
            $("#multi-msg").html("<img src='loading.gif/>");
 
    var formObj = $(this);
    var formURL = formObj.attr("action");
 
if(window.FormData !== undefined)  // for HTML5 browsers
//  if(false)
    {
    
        var formData = new FormData(this);
        $.ajax({
            url: formURL,
            type: 'POST',
            data:  formData,
            mimeType:"multipart/form-data",
            contentType: false,
            cache: false,
            processData:false,
            success: function(data, textStatus, jqXHR)
            {
                    $("#multi-msg").html(''+data+'');
            },
            error: function(jqXHR, textStatus, errorThrown) 
            {
                $("#multi-msg").html('AJAX Request Failed<br/> textStatus='+textStatus+', errorThrown='+errorThrown+'');
            }           
       });
        e.preventDefault();
        e.unbind();
   }
   else  //for olden browsers
    {
        //generate a random id
        var  iframeId = 'unique' + (new Date().getTime());
 
        //create an empty iframe
        var iframe = $('<iframe src="javascript:false;" name="'+iframeId+'" />');
 
        //hide it
        iframe.hide();
 
        //set form target to iframe
        formObj.attr('target',iframeId);
 
        //Add iframe to body
        iframe.appendTo('body');
        iframe.load(function(e)
        {
            var doc = getDoc(iframe[0]);
            var docRoot = doc.body ? doc.body : doc.documentElement;
            var data = docRoot.innerHTML;
            $("#multi-msg").html(''+data+'');
        });
    
    }
 
});
 
 
$("#multi-post").click(function()
    {
        
    $("#multiform").submit();
    
});
 
});
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
15.08.2015, 11:49
Помогаю со студенческими работами здесь

Warning: require_once [function.require-once]: failed to open stream: No such file or directory
не получается установить сайт на денвер, пишет мне ошибку: Warning:...

Warning: include(1) [function.include]: failed to open stream: No such file or directory in
Выдает вот такую ошибку Warning: include(1) : failed to open stream: No such file or directory in...

Warning: include(templates.php) [function.include]: failed to open stream: No such file or directory
Как исправить ошибку, этот текст выдает на главной странице

Ошибка Warning: mkdir() [function.mkdir]: File exists
Подскажите в чем ошибка? Выводит ошибку Warning: mkdir() : File exists if (is_dir('image_generator/$date$unic_id_user')) { ...

File get contents функции
SSH доступ. ХЗ какие натройки function getFile ($path, $fName) { if (!empty($_GET)) { ob_end_clean(); ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru