powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / AJAX загрузка данных на сервер. Передача файла. Как сделать?
7 сообщений из 7, страница 1 из 1
AJAX загрузка данных на сервер. Передача файла. Как сделать?
    #39733098
Rustam Ergashev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Был старый рабочий проект. Работал на PHP и MySQL. Сделал занова с элементами AJAX. На проекте была форма записи данных о документе и прикрипления самого файла к этому записи посредством записи файла на каталог сервера и имени файла на базу. Тепер сделал запись спомощю AJAX. Данные записиваются.
Код: 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.
$('#bUpdate').click(function(){   
      var eid = $('#id').val();
      var eup_type = $('#up_type').val();
      var emy_date = $('#my_date').val();
      var emy_text = $('#my_text').val();
    
      $.ajax({
        type:'POST',
        url: "savedata.php", 
 
        data:{id:eid,
             up_type:eup_type,
             my_date:emy_date,
             my_text:emy_text,
             q_type:'update'},  
        
        success: function(data) {
             if (data=='success') {
               alert("Данные сохранены.");
               document.location = "list.php?sts=0";
             } else {
		alert('ОШИБКА ');
             }
             
        } 
      });
  }); 


и код в
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
if ((empty($_POST["my_date"]))||(empty($_POST["my_text"]))) {
    $errorMSG = "Введите данные. ";
    echo $errorMSG;
  }else{
    $myid = htmlspecialchars($_POST["id"], ENT_QUOTES);   
    $up_type = htmlspecialchars($_POST["up_type"], ENT_QUOTES);  
    $my_date = htmlspecialchars($_POST["my_date"], ENT_QUOTES);        
    $my_text = htmlspecialchars($_POST["my_text"], ENT_QUOTES);  
    $date_reg = date("Y-m-d H:i:s");  
    $sql = "update appeal m set m.my_date='$my_date', m.my_text='$my_text', m.m_status=$up_type, m.m_status_date='$date_reg',       where m.id=$myid";
    if(mysql_query($sql)){echo 'success';}else{echo 'error';}
  }


код работает. На форме ест еще элемент input=file
Код: html
1.
<input type="file" multiple="multiple" accept=".pdf, .jpg" id="my_file_name" required>   


как можно сохранить файл с помощю AJAX, то есть закачать файл на сервер и записать имя файла в таблицу. просто один файл записать с помощю AJAX нашел пример, мне нужно чтобы остолные данные тоже передавались с помощю AJAX.
...
Рейтинг: 0 / 0
AJAX загрузка данных на сервер. Передача файла. Как сделать?
    #39733100
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
AJAX загрузка данных на сервер. Передача файла. Как сделать?
    #39733109
Rustam Ergashev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
skyANA,
спасибо. Я до написания сообщения уже прочитал пару ответов от Google. и у себя на сервере испробовал но совместит с моим кодом не смог.
Код: 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.
$('#bUpdate').click(function(){   
      var eid = $('#id').val();
      var eup_type = $('#up_type').val();
      var emy_date = $('#my_date').val();
      var emy_text = $('#my_text').val();
     
      var form_data = new FormData($("#my_file_name")[0]);
      
      //var form_data = new FormData();
      
      //$.each( files, function( key, value ){
      //  form_data.append( key, value );
      //});

    	//form_data.append( 'my_file_name', 1 );
      
      $.ajax({
        type:'POST',
        url: "savedata.php", 
 
        data:{id:eid,
             up_type:eup_type,
             my_date:emy_date,
             my_text:emy_text,
             form_data:form_data,
             q_type:'update'},  
        processData: false,
        contentType: false,             
        success: function(data) {
             if (data=='success') {
               alert("Данные сохранены.");
               document.location = "list.php?sts=0";
             } else {
				       console.log('ОШИБКА: ' + respond.error );
			       }
             
        } 
      });
  }); 


Код: 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.
  if(isset( $_POST['my_file_name'])){  
//    // ВАЖНО! тут должны быть все проверки безопасности передавемых файлов и вывести ошибки если нужно
//    $uploaddir = './uploads'; // . - текущая папка где находится submit.php
//    // cоздадим папку если её нет
//    if( ! is_dir( $uploaddir ) ) mkdir( $uploaddir, 0777 );
//    $files      = $_FILES; // полученные файлы
//    $done_files = array();
//    // переместим файлы из временной директории в указанную
//    foreach( $files as $file ){
//        $file_name = cyrillic_translit( $file['name'] );
//        if( move_uploaded_file( $file['tmp_name'], "$uploaddir/$file_name" ) ){
//            $done_files[] = realpath( "$uploaddir/$file_name" );
//        }
//    }
//    $data = $done_files ? array('files' => $done_files ) : array('error' => 'Ошибка загрузки файлов.');
//    die( json_encode( $data ) );
                               

    $name_mur_file = basename($_FILES['my_file_name']['name']);
    $type_mur_file = substr($name_mur_file, strrpos($name_mur_file, '.') + 1);
    $size_mur_file = $_FILES["my_file_name"]["size"] / 1024;
    $errors = '';
    $max_file_size = 1024; 
    $allowed_extensions = array("jpg", "pdf");        
    $upload_folder = 'uploads/';
    if ($size_mur_file > $max_file_size) {  $errors .= "  Файл разера больше - $max_file_size kb ";  }
    $allowed_ext = false;
    for ($i = 0; $i < sizeof($allowed_extensions); $i++) {
        if (strcasecmp($allowed_extensions[$i], $type_mur_file) == 0) {
            $allowed_ext = true;
        }
    }
    if (!$allowed_ext) { $errors .= "  Неправильное раширение файла. Должно быть: " . implode(',', $allowed_extensions); }
    $path_up_file = $upload_folder . $name_mur_file;
    $tmp_path = $_FILES["ijro_file_name"]["tmp_name"]; 
    $newFileName='r'.date('YmdHis').'_'.$myid.'_'.$reg_emp_id.'.'.$type_mur_file; 
    $path_up_file = $upload_folder .$newFileName; 
    if (empty($errors)) {
        if (is_uploaded_file($tmp_path)) {
            if (!copy($tmp_path, $path_up_file)) { $errors .= " Ошибка при копирование. "; }
        }
    }
    $errorMSG = $errors;
    if (!empty($errorMSG)){ 
      echo $name_file;      
    }
  }
if ((empty($errorMSG))||(empty($_POST["my_date"]))||(empty($_POST["my_text"]))) {
    $errorMSG = "Введите данные. ";
    echo $errorMSG;
  }else{
    $myid = htmlspecialchars($_POST["id"], ENT_QUOTES);   
    $up_type = htmlspecialchars($_POST["up_type"], ENT_QUOTES);  
    $my_date = htmlspecialchars($_POST["my_date"], ENT_QUOTES);        
    $my_text = htmlspecialchars($_POST["my_text"], ENT_QUOTES);  
    //  $newFileName новое имя файла
    $date_reg = date("Y-m-d H:i:s");  
    $sql = "update appeal m set m.my_date='$my_date', m.my_text='$my_text', m.m_status=$up_type, m.m_status_date='$date_reg',       where m.id=$myid";
    if(mysql_query($sql)){echo 'success';}else{echo 'error';}
  }


но не полусилось совместная отправка данных. Опыта работы с AJAX нихватаеть.
...
Рейтинг: 0 / 0
AJAX загрузка данных на сервер. Передача файла. Как сделать?
    #39733135
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Rustam Ergashev,

внимательно смотрите примеры, внимательно!

https://www.cloudways.com/blog/the-basics-of-file-upload-in-php/

зачем Вы лепите отсебятину:
Код: javascript
1.
2.
3.
4.
5.
6.
data:{id:eid,
             up_type:eup_type,
             my_date:emy_date,
             my_text:emy_text,
             form_data:form_data,
             q_type:'update'}


когда в примере явно указано:
Код: javascript
1.
data: new FormData(this)


?

FormData уже содержит все поля формы, в том числе и файл.
...
Рейтинг: 0 / 0
AJAX загрузка данных на сервер. Передача файла. Как сделать?
    #39733139
SQLPowerUser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Rustam Ergashev,

print_r($_POST) что выводит?
Можно ещё в соседней ветке спросить, как в PHP одновременно принять одновременно файл и обычные данные.
...
Рейтинг: 0 / 0
AJAX загрузка данных на сервер. Передача файла. Как сделать?
    #39733143
SQLPowerUser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пока оформлял сообщение, skyANA дал правильный ответ...
...
Рейтинг: 0 / 0
AJAX загрузка данных на сервер. Передача файла. Как сделать?
    #39733281
Rustam Ergashev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
skyANA, SQLPowerUser. спасибо за помощ. Сегодня попробую.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / AJAX загрузка данных на сервер. Передача файла. Как сделать?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]