Перейти к содержимому


Скопировать файл из таблицы в поле типа "файл"

файл

Сообщений в теме: 10

#1 aleks.goodcolor

    Активный участник

  • Пользователи
  • PipPipPip
  • 198 сообщений
  • Пол:Мужчина
  • Город:Йошкар-ола

Отправлено 20 Август 2014 - 14:44

Подскажите пожалуйста каким образом можно скопировать файл из одной записи в другую. Поле типа "файл".
На форуме нашел только способ, чтобы можно было скопировать в поле с типом текст и включенным html, но мне этот вариант не подходит.

если использовать функцию save_data_file, то необходимо знать путь к файлу но как его получить? использовать ссылку по которой происходит скачивание файла?

$dat = file_get_contents(ссылка до файла);
save_data_file
(id поля, $new_id, название, $dat);


#2 wondertalik

    Активный участник

  • Пользователи
  • PipPipPip
  • 1 159 сообщений
  • Пол:Мужчина
  • Город:Кривой Рог, Украина

Отправлено 20 Август 2014 - 19:44

Просмотр сообщенияaleks.goodcolor (20 Август 2014 - 14:44) писал:

Подскажите пожалуйста каким образом можно скопировать файл из одной записи в другую. Поле типа "файл".
На форуме нашел только способ, чтобы можно было скопировать в поле с типом текст и включенным html, но мне этот вариант не подходит.

если использовать функцию save_data_file, то необходимо знать путь к файлу но как его получить? использовать ссылку по которой происходит скачивание файла?

$dat = file_get_contents(ссылка до файла);
save_data_file
(id поля, $new_id, название, $dat);

Плохо искали я уже кому-то ссылку на статью давал. Вот статья как копировать из одного поля в другое.

#3 aleks.goodcolor

    Активный участник

  • Пользователи
  • PipPipPip
  • 198 сообщений
  • Пол:Мужчина
  • Город:Йошкар-ола

Отправлено 21 Август 2014 - 10:48

Просмотр сообщенияwondertalik (20 Август 2014 - 19:44) писал:

Плохо искали я уже кому-то ссылку на статью давал. Вот статья как копировать из одного поля в другое.
Спасибо за ответ. я так понимаю что без использования внешних файлов копирование файлов невозможно?

#4 wondertalik

    Активный участник

  • Пользователи
  • PipPipPip
  • 1 159 сообщений
  • Пол:Мужчина
  • Город:Кривой Рог, Украина

Отправлено 21 Август 2014 - 10:51

Просмотр сообщенияaleks.goodcolor (21 Август 2014 - 10:48) писал:

Спасибо за ответ. я так понимаю что без использования внешних файлов копирование файлов невозможно?
Почему нет, возможно. Но для этого вам придется писать код самому, поболее чем пару строчек. А это уже требует знаний. Можете поискать на форуме. Тем по работе с файлами - куча.

#5 aleks.goodcolor

    Активный участник

  • Пользователи
  • PipPipPip
  • 198 сообщений
  • Пол:Мужчина
  • Город:Йошкар-ола

Отправлено 21 Август 2014 - 12:04

Алгоритм записи файла я понимаю - главное понять как получить адрес файла в поле.

#6 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 762 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 03 Сентябрь 2014 - 10:40

Адрес файла получается через функцию get_file_path(id поля, id записи, имя файла).

#7 aleks.goodcolor

    Активный участник

  • Пользователи
  • PipPipPip
  • 198 сообщений
  • Пол:Мужчина
  • Город:Йошкар-ола

Отправлено 03 Сентябрь 2014 - 14:47

Спасибо за функцию.
Пытаюсь получить файлы в новой записи но никак не получается. Выводится только файл из второй записи и дублируется столько раз сколько было файлов.
Немного объясню в чем заключается задача: подгружаю письма в КБ. Проверяю есть ли необработанные письма от одного и того же адреса. Если есть, то склеиваю эти письма путем создания новой записи. а необработанные письма становятся обработанными. Таким образом мне нужно добавить в новую запись файлы из писем.
Алгоритм получения файлов такой:
- Получаю названия и пути файлов в массивы из первого письма.
- Получаю названия и пути файлов в массивы из второго письма.
- Сливаю массивы
- В цикле произвожу запись файлов в новую запись

Подскажите пожалуйста в чем может быть ошибка?

Вот часть кода где я произвожу "склеивание":
$res2 = data_select(580, "`status` = 0 AND (`f9920`='Входящее (тек.)' OR `f9920`='Входящее (нов.)') AND `f9800` =",$line['От кого']," AND `f9810` = 'Новый'" /*AND `f9930` =",$line['Менеджер']*/);
                 
                   
while($row2 = sql_fetch_assoc($res2))                
                   
{
                               
if($row2['f9800']==$line['От кого'] && $check != "777")
                               
{
                                                $tx
= $row2['f9830'];
                                               
//формируем поля для новой записи
                                                $check
= "777";
                                                $mas
['Кому'] = $row2['f9780'];
                                                $mas
['Имя отправителя'] = $row2['f9790'];
                                                $mas
['От кого'] = $row2['f9800'];
                                                $mas
['Тема'] = "Объединенное сообщение от ".$row2['f9790'];
                                                $mas
['status_files'] = "1";
                                               
//$mas['Приоритет'] = $row2['f9900'];
                                                $mas
['Статус'] = $row2['f9920'];
                                                $mas
['Менеджер'] = $row2['f9930'];
                                                $mas
['Контрагент'] = $row2['f9880'];
                                                $mas
['Поставщики'] = $row2['f9890'];
                                                $mas
['Фрилансеры'] = $row2['f9940'];
                                                $mas
['Соискатели'] = $row2['f9950'];
                                                $mas
['Вывод'] = $row2['f9980'];
                                                $mas
['Дата'] = $row2['f9840'];
                                                $mas
['Статус ответа'] = "Новый";
                                                $mas2
['Действие'] = "Письмо";
                                                $mas2
['Клиент'] = $row2['f9790'];
                                         
                                                $mas2
['Менеджер'] = $row2['f9930'];
                                                $mas2
['Статус'] = "Новый";
                                                $mas2
['ID письма'] = $row2['id'];
                                                $mas2
['Email'] = $row2['f9800'];
                                                $mas2
['Ссылка'] = "нет";
                                               
if($line['Файлы']!=NULL)
                                               
{
                                                   $files
= explode("\r\n", $line['Файлы']);
                                                   
foreach ($files as $filename)
                                                   
{
                                                       
                                                          $dat
[] = get_file_path(9860, $line['ID'],$filename);
                                                       
                                                   
}
                                                 
                                               
}
                           
}
                           
if($row2['f9800']==$line['От кого'] && $check == "777" && $tx != $row2['f9830'])
                           
{  
                                               
if($row2['f9860']!=NULL)
                                               
{
                                                   $files2
= explode("\r\n", $row2['f9860']);
                                                   
foreach ($files2 as $filename2)
                                                   
{
                                                       
                                                          $dat2
[] = get_file_path(9860, $row2['ID'],$filename);
                                                   
}
                                                 
                                                 
                                                       
                                               
}
                                         
                                                $tx
.= "\r\n\r\nДобавлено в ".$row2['f9840']." : \r\n\r\n".$row2['f9830'];
                                         
                                                $mas
['Сообщение'] = $tx;
                                                $mas
['Приоритет'] = $row2['f9900'];
                                                $mas2
['Приоритет'] = $row2['f9900'];
                                                $mas2
['Дата'] = $row2['f9840'];
                                                $res3
= data_select(580, "`status` = 0");
                                               
while($row3 = sql_fetch_assoc($res3))
                                               
{
                                                         
if($row3['f9830']==$tx && $row3['f9820']== "Объединенное сообщение от ".$row3['f9790'])
                                                         
{
                                                                 $insert
= "123";
                                                         
}      
                                               
}
                                               
if ($insert!="123")
                                               
{  
                                                         $new_id
= insert_query($mas,Почта);
                                                         $dat_all
= array_merge($dat, $dat2);
                                                         $fl
= array_merge($files, $files2);
                                                         
for($i=0; $i<count($dat_all);$i++)
                                                         
{
                                                                $mas_upd
['Файлы'] =$mas_upd['Файлы'] ? ($mas_upd['Файлы']."\r\n".$fl[$i]):$fl[$i];
                                                                save_data_file
(9860, $new_id, $fl[$i], $dat_all[$i]);
                                                         
}
                                                         update_query
($mas_upd, "Почта", "id=$new_id");
                                                         $new_id_log
= insert_query($mas2,Лог);
                                                         $upd_data
['Статус ответа'] = "Обработано";
                                                         $upd_log
['Статус'] = "Обработано";
                                                       
                                                       
                                                       
                                                         $res4
= data_select(580, "`status` = 0 AND `f9800`=",$line['От кого']);
                                                         
while($row4 = sql_fetch_assoc($res4))
                                                         
{                                                                                                                                
                                                               
if($row4['f9800']==$line['От кого'] && $row4['f9820']!="Объединенное сообщение от ".$row4['f9790'])
                                                               
{
                                                                  $newid
= $row4['id'];
                                                                  update_query
($upd_data, "Почта", "id=$newid");
                                                                  update_query
($upd_log, "Лог", "f10120=$newid AND f10070 != 'нет'");
                                                               
                                                               
}
                                                         
}
                                                         $insert
= "123";
                                               
}                
                           
}
                               
                   
}

Сообщение отредактировал aleks.goodcolor: 03 Сентябрь 2014 - 14:53


#8 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 762 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 03 Сентябрь 2014 - 15:06

Ну здесь наверняка просто где-то логическая ошибка в коде. Раз хотя бы один файл пишется - значит наши функции используются верно.

#9 aleks.goodcolor

    Активный участник

  • Пользователи
  • PipPipPip
  • 198 сообщений
  • Пол:Мужчина
  • Город:Йошкар-ола

Отправлено 03 Сентябрь 2014 - 15:17

Да так и есть - уже нашел ошибку.

#10 aleks.goodcolor

    Активный участник

  • Пользователи
  • PipPipPip
  • 198 сообщений
  • Пол:Мужчина
  • Город:Йошкар-ола

Отправлено 04 Сентябрь 2014 - 13:54

Теперь выводит название всех файлов и их даже можно скачать но внутри содержимого файла написано путь к файлу и все данные внутри стерты. Подскажите пожалуйста с чем это может быть связано?

UPD: совсем забыл что в $dat нужно записывать сам файл а не путь к нему добавил строки:
$tmpname = get_file_path(9860, $row2['ID'],$filename);
$dat
[] = file_get_contents($tmpname);
Но теперь почему-то файл пустой

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

Сообщение отредактировал aleks.goodcolor: 04 Сентябрь 2014 - 14:27


#11 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 762 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 04 Сентябрь 2014 - 17:50

Возможно прав на чтение файла нет, хотя по идее должны быть. Затрудняюсь точно сказать.





Количество пользователей, читающих эту тему: 1

0 пользователей, 1 гостей, 0 анонимных