Имя: Пароль:
1C
1C 7.7
v7: Загрузка файла на сайт методом POST
0 Gamover
 
11.09.13
13:00
Подскажите пожалуйста... пытаюсь загрузить файл на сервер, в параметр userfile, но пока безрезультатно. Суть файла очень проста... через разделитель Лиц.счет, Адрес, дата, долг.

Процедура Сформировать()

  //Загружаем внешнюю компоненту для вызова методов отправки файла
  Если  ЗагрузитьВнешнююКомпоненту("C://Temp/" + "v7plus.dll") <> 1 Тогда
    Предупреждение("Компонента v7plus.dll не найдена!");
    Возврат;
  Конецесли;

  ФайлДанных = "dolg3.txt";   //Имя передаваемого файла  
  ПутьКФайлуДанных ="C:\temp\dolg3.txt" ;  //Полный путь к передаваемому файлу

  HTTP = СоздатьОбъект("Addin.V7HttpReader");
  АдресСайта="http://www.izhdomofon.ru?userfile=";+ ФайлДанных ;
  
  Ответ = "";  //В данную переменную получим ответ обработки нашего запроса с сайта

  Попытка      
    HTTP.УстановитьЗаголовокЗапроса("Content-Disposition","form-data"); //Это означает что будет осуществляться передача файла
    HTTP.УстановитьЗаголовокЗапроса("Content-Type","application/x-txt"); //тип передаваемого файла
    HTTP.УстановитьЗаголовокЗапроса("MAX_FILE_SIZE","1000"); //Максимальный размер файла ( но не более чем web сервер может принять)
    HTTP.УстановитьЗаголовокЗапроса("userfile",ФайлДанных); //Имя файла
    HTTP.ОтправитьДляОбработки(АдресСайта, ПутьКФайлуДанных, 1, Ответ, 2); //Сама команда отправки файла      
  Исключение
    Сообщить(ОписаниеОшибки());
  КонецПопытки;
КонецПроцедуры


Компонента V7Plus : Ошибка исполнения HTTP запроса, код - 405
Ошибка при выполнении метода объекта компоненты C:\Temp\v7plus.dll
1 Gamover
 
11.09.13
14:59
ап
2 Scanvir
 
11.09.13
15:02
Попробуй разобраться через WinHttpRequest

мой кусок кода рабочий:

WinHttp = СоздатьОбъект("WinHttp.WinHttpRequest.5.1");
WinHttp.Option(2,"utf-8");
WinHttp.SetTimeouts(0, 0, 0, 0);
WinHttp.Open("POST","http://w-kv-kraf2o-100/cgi-bin/insert_1c_global.cgi",1);
WinHttp.SetRequestHeader("Accept-Language", "ru");
WinHttp.SetRequestHeader("Accept-Charset",    "utf-8");
WinHttp.setRequestHeader("Content-Language", "ru");
WinHttp.setRequestHeader("Content-Charset", "utf-8");
WinHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded; charset=utf-8");
ПараметрыПОСТ = "data=" + ДатаСКЛ(НачДата) + "&tz=" + Список + "&first=" + Первый;
WinHttp.Send(ПараметрыПОСТ);
3 Gamover
 
11.09.13
23:43
Имяфайла ="C:\temp\dolg3.txt"    
Попытка
        пОбъект=СоздатьОбъект("Msxml2.XMLHTTP");
        пОбъект.Open("post","http://www.izhdomofon.ru/script/upload.php",0);    
        пОбъект.SetRequestHeader("Accept-Charset",    "utf-8");    
        ПараметрыПОСТ = "userfile=" + ИмяФайла;
        пОбъект.Send(ПараметрыПОСТ);    
        Message(пОбъект.status);
        Message(пОбъект.statustext);
        Message(пОбъект.readyState);
        
    Исключение
        Сообщить("Не получилось ((");
        Message(пОбъект.status);
        Message(пОбъект.statustext);
        Message(пОбъект.readyState);
        Message(пОбъект.ResponseText);
    КонецПопытки;

Возвращает
200
OK
4
А толку 0... данные на сервере не обновляются.
4 France
 
12.09.13
00:00
(0) Попробуй насладиться жизнью использовав wget
5 Scanvir
 
12.09.13
10:42
босюсь что вот тут:

ПараметрыПОСТ = "userfile=" + ИмяФайла;

методом пост передастся название файла а не файл

а что за файл? если текст то может передавать не файл а его содержимое?
6 Scanvir
 
12.09.13
10:55
я у себя передаю текстом строку размером в 600 кб и сервер хавает...