Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / AJAX загрузка данных на сервер. Передача файла. Как сделать? / 7 сообщений из 7, страница 1 из 1
14.11.2018, 16:11
    #39733098
Rustam Ergashev
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
AJAX загрузка данных на сервер. Передача файла. Как сделать?
Был старый рабочий проект. Работал на 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
14.11.2018, 16:15
    #39733100
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
AJAX загрузка данных на сервер. Передача файла. Как сделать?
...
Рейтинг: 0 / 0
14.11.2018, 16:35
    #39733109
Rustam Ergashev
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
AJAX загрузка данных на сервер. Передача файла. Как сделать?
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
14.11.2018, 17:39
    #39733135
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
AJAX загрузка данных на сервер. Передача файла. Как сделать?
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
14.11.2018, 17:42
    #39733139
SQLPowerUser
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
AJAX загрузка данных на сервер. Передача файла. Как сделать?
Rustam Ergashev,

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


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