Имя: Пароль:
1C
 
ОтправитьДляОбработки не передает файл
,
0 kabv
 
08.09.18
13:14
Здравствуйте!
Код:
    ИмяФайлаОтправки = ПолучитьИмяВременногоФайла("txt");
    ИмяФайлаДанных = "D:\temp\license.txt";
    Boundary = СтрЗаменить(Строка(Новый УникальныйИдентификатор()), "-", "");
    ФайлДляПередачи = Новый ТекстовыйДокумент;
    ФайлДляПередачи.Прочитать(ИмяФайлаДанных);
    ЗаписьТекста = Новый ЗаписьТекста(ИмяФайлаОтправки);
    ЗаписьТекста.ЗаписатьСтроку("--"+boundary);
    ЗаписьТекста.ЗаписатьСтроку("Content-Disposition: form-data; name=""datafile""; filename=""stih.txt""");
    ЗаписьТекста.ЗаписатьСтроку("Content-Type: text/plain");
    ЗаписьТекста.ЗаписатьСтроку("");
    ЗаписьТекста.Записать(ФайлДляПередачи.ПолучитьТекст());
    ЗаписьТекста.ЗаписатьСтроку("");
    
    // закроем разделитель
    ЗаписьТекста.ЗаписатьСтроку("--"+boundary+"--");
    
    ЗаписьТекста.Закрыть();
    
    ФайлОтправки = Новый Файл(имяФайлаОтправки);
    
    Заголовки = Новый Соответствие();
    //Заголовки.Вставить("User-Agent", "Other");
    Заголовки.Вставить("Content-Type", "multipart/form-data, boundary="+boundary);
    Заголовки.Вставить("Content-Lenght", ФайлОтправки.Размер());
    
    СерверПриемник = "igor.mageon.ru"; //Без протокола . Естественно, следует указать свой адрес.
    Порт = "80"; //Это общепринятый порт. Возможно, для вашего сервера применяется другой. Конкретное значение уточните у хостера.

    //ИспользоватьПрокси - какая-то логическая переменная, может быть значение флажка на форме или переключатель
    ИспользоватьПрокси = Ложь;
    Если ИспользоватьПрокси Тогда
        Прокси = Новый ИнтернетПрокси;
        Прокси.НеИспользоватьПроксиДляЛокальныхАдресов = Истина;
        Прокси.Пароль = "ПарольПрокси"; // укажите своё значение
        Прокси.Пользователь = "ПользовательПрокси"; // укажите своё значение
        НТТР = Новый HTTPСоединение(СерверПриемник, Порт, , , Прокси);
    Иначе
        НТТР = Новый HTTPСоединение(СерверПриемник, Порт);
    КонецЕсли;
    
    АдресСкрипта = "index1.php"; //Без протокола  и имени домена. Естественно, следует указать имя своего скрипта.
    ИмяФайлаОтвета = КаталогВременныхФайлов() + "answer.tmp";
    имяВыходногоФайла = ПолучитьимяВременногоФайла("txt");
    НТТР.ОтправитьДляОбработки(ИмяФайлаОтправки, АдресСкрипта, имяВыходногоФайла, Заголовки);

Это содержание файла, который хочу отправить:
--f30078224a9648faab7366fcb95162e7
Content-Disposition: form-data; name="datafile"; filename="stih.txt"
Content-Type: text/plain

This General Public License does not permit incorporating your program into
proprietary programs.  If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library.  If this is what you want to do, use the GNU Lesser General
Public License instead of this License.
--f30078224a9648faab7366fcb95162e7--

На сервере в $assa = $_FILES['datafile']; пусто
Почему?
1 Lamer1C
 
08.09.18
13:41
(0) https://helpf.pro/faq8/view/1298.html тут пример отправки multipart/form-data через 1с. посмотрите
Закон Брукера: Даже маленькая практика стоит большой теории.