Upload файла через ОтправитьДляОбработки

Тема в разделе "1C и всё что с ней связано", создана пользователем xmailer, 10 авг 2007.

  1. xmailer

    xmailer Гость

    Может у кого есть пример реализации загрузки файла на хост. В моем случае:
    Код (Text):
        ЗаголовокHTTP = Новый Соответствие();
    ЗаголовокHTTP.Вставить("Host", "localhost");
    ЗаголовокHTTP.Вставить("Content-Type", "multipart/form-data");
    //ЗаголовокHTTP.Вставить("Content-Type", "application/x-www-form-urlencoded");
    ЗаголовокHTTP.Вставить("Content-Length", "2019");

    HTTP = Новый HTTPСоединение("localhost");
    HTTP.ОтправитьДляОбработки("c:\temp01.dbf", "i.phtml", "c:\out.txt", ЗаголовокHTTP);
    //HTTP.Записать("c:\temp01.dbf", "i.phtml", ЗаголовокHTTP);
    i.phtml
    Код (Text):
    <?php
    print "<pre>";
    print_r($_POST);
    print_r($_FILES);
    print "</pre>";

    if($fp=fopen("out.txt", "wb")){
    fwrite($fp, "post: ".sizeof($_POST)."\n");
    fwrite($fp, "file: ".sizeof($_FILES)."\n");
    fclose($fp);
    }
    ?>
    на операции HTTP.ОтправитьДляОбработки все виснет, через длительное время ошибка выполнения ОтправитьДляОбработки
     
  2. Typhoon

    Typhoon Гость

    Твоя проблема в том что для 1с8 нада обязательно для HTTP соединения еще указать настройки прокси сервера иначе оно не будет работать.
     
  3. xmailer

    xmailer Гость

    Проблема точно не в этом, заменим часть кода
    Код (Text):
        ПроксиСервер = Новый ИнтернетПрокси();
    ПроксиСервер.НеИспользоватьПроксиДляЛокальныхАдресов = Истина;

    HTTP = Новый HTTPСоединение("localhost",,,, ПроксиСервер);
    1С в глубокой задумчивости
     
  4. bsa

    bsa Гость

     
  5. Pozitive

    Pozitive Гость

    Можно сделать лучше, таким макаром можно и архив передать, и символы удалять не нужно.
    Установите основной header, примерно так:

    Код (Text):
    Accept-Language: ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3
    Accept-Encoding: gzip,deflate
    Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7
    Keep-Alive: 300
    Connection: keep-alive
    Content-Type: multipart/form-data; boundary=---------------------------69653007630741


    Добавить заголовки можно примерно так:

    ЗаголовокHTTP = Новый Соответствие();
    ЗаголовокHTTP.Вставить("Content-Type", "application/x-www-form-urlencoded");
    HTTP = Новый HTTPСоединение("localhost");
    HTTP.ОтправитьДляОбработки(ИмяПередаваемогоФайла,АдресРесурса,
    ИмяВыходногоФайла,ЗаголовокHTTP);
    Также нужно обернуть файлик, который будет отправлять, примерно так:
    Код (Text):
    -----------------------------69653007630741
    Content-Disposition: form-data; name="filename2"; filename="post2_old.zip"
    Content-Type: application/zip

    СОДЕРЖИМОЕ АРХИВА
    -----------------------------69653007630741--
    PHP
    Код (Text):
    if(count($_FILES) > 0) {

    if (strpos($system_folder, '/') === FALSE) {
    if (function_exists('realpath') AND @realpath(dirname(__FILE__)) !== FALSE){
    $system_folder = realpath(dirname(__FILE__)).'/'.$system_folder;
    }
    } else {
    $system_folder = str_replace("\\", "/", $system_folder);
    }

    foreach ($_FILES as $uploadFile) {
    $uploaded_file= $system_folder.'../system/in/offers/'.str_replace(' ', '', $uploadFile['name']);
    if (is_uploaded_file($uploadFile['tmp_name'])) {
    if (!move_uploaded_file($uploadFile['tmp_name'], $uploaded_file)) {
    die('Проблема: невозможно переслать файл в каталог назначения '.$uploaded_file);
    }
    } else {
    die('Error: file not transportet');
    }
    }
    echo "success\n";
    }
     
Загрузка...

Поделиться этой страницей