25.03.2009, 00:43 | #7 |
Участник
|
Цитата:
Сообщение от Lucky13
Если файл текстовый, то, на мой взгляд, лучше использовать http post как говорит Aleksey_M. Проблем особых нет - в аксапте используется тот же WinInet, а на PHP пишется скрипт из нескольких строк. FTP в данном случае создаст дополнительные трудности при администрировании - придется права настраивать, порты открывать и т.п.
А вот если файл бинарный, то только FTP, http post в принципе все равно какие данные передавать, а вот в Аксапте будут проблемы, так как не получается получить указатель на бинарные данные чтобы передать его в фукнцию. Тип str для этого не подойдет, так как обрежет данные по первому нулевому символу. Добавил в WinInet new() X++: _httpOpenRequest = new DLLFunction(_winInet, 'HttpOpenRequestA'); _httpOpenRequest.returns(ExtTypes::DWORD); _httpOpenRequest.arg(ExtTypes::DWORD); _httpOpenRequest.arg(ExtTypes::STRING); _httpOpenRequest.arg(ExtTypes::STRING); _httpOpenRequest.arg(ExtTypes::STRING); _httpOpenRequest.arg(ExtTypes::STRING); _httpOpenRequest.arg(ExtTypes::STRING); _httpOpenRequest.arg(ExtTypes::DWORD); _httpOpenRequest.arg(ExtTypes::DWORD); _httpSendRequest = new DLLFunction(_winInet, 'HttpSendRequestA'); _httpSendRequest.returns(ExtTypes::DWORD); _httpSendRequest.arg(ExtTypes::DWORD); _httpSendRequest.arg(ExtTypes::STRING); _httpSendRequest.arg(ExtTypes::DWORD); _httpSendRequest.arg(ExtTypes::POINTER); _httpSendRequest.arg(ExtTypes::DWORD); X++: int httpOpenRequest(int _handler, str _request, str _targetObjectName) { return _httpOpenRequest.call(_handler, _request, _targetObjectName, 0, 0, 0, 1,0); } boolean httpSendRequest(int _handler, BinData _file, int _size) { return _httpSendRequest.call(_handler, "Content-Type: application/x-www-form-urlencoded", 47, _file, _size); } X++: BinData binData = new BinData(); binData.loadFile("c:\\test5.txt"); code1 = winInet.internetConnect("192.168.0.10", "", "", 3); code2 = winInet.httpOpenRequest(code1, "POST", "receive.php"); iwinInet.httpSendRequest(code2, binData, binData.getVariant().safeArray().lastIndex())) |
|