curl добавляет лишнего в файл при закачке

ShamanRnD

Новичок
Здравствуйте, столкнулся с такой проблемой - через curl закачивается xml файл на сервер, но после закачки он выглядит следующим образом (добавляются лишние строки в начало и конец файла):
PHP:
------------------------------5ca8137d1837
Content-Disposition: form-data; name="files"; filename="w:/html/market.local/www/import.xml"
Content-Type: application/octet-stream

<?xml version="1.0" encoding="UTF-8"?>
<КоммерческаяИнформация xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="commerceml_2.04.xsd" ВерсияСхемы="2.04" ДатаФормирования="2008-01-09T18:13:34">
	<Классификатор>
		<Ид>bd72d8f9-55bc-11d9-848a-00112f43529a</Ид>
		<Наименование>Классификатор (Каталог товаров)</Наименование>
		<Владелец>
			
		</Владелец>
		<Группы>
			<Группа>
				<Ид>05e26d6f-01e4-11dc-a411-00055d80a2d1</Ид>
				<Наименование>Мебель</Наименование>
			</Группа>
		</Группы>
	</Классификатор>
	</КоммерческаяИнформация>

------------------------------5ca8137d1837
Content-Disposition: form-data; name="type"

catalog
------------------------------5ca8137d1837
Content-Disposition: form-data; name="mode"

file
------------------------------5ca8137d1837--

и обработчик который его обрабатывает спотыкается....как вылечить? кучу опций курла уже перепробовал, не помогает :( из 1с эта же выгрузка проходит нормально, файл закачивается без этих лишних вещей...т.е дело в скрипте закачки где то

PHP:
$file="@"."w:/tmp/import.xml"; 
$url='http://test.local/shop/1c/?type=catalog&mode=file&filename=import.xml';

 $curl = curl_init();
	curl_setopt($curl, CURLOPT_POST,true);
	curl_setopt($curl, CURLOPT_POSTFIELDS, array("files"=>$file));
	curl_setopt($curl,CURLOPT_HTTPHEADER,$cookie);
	curl_setopt($curl, CURLOPT_URL, $url);
	curl_setopt($curl, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)");
	curl_exec($curl);
посоветуйте плиз
 

Gas

может по одной?
Ты передаёшь файл как multipart-data, скорее всего тебе это не нужно. Обычно подобные сервисы ожидают в http-body только xml, тогда нужно:

PHP:
curl_setopt($curl, CURLOPT_POSTFIELDS, urlencode(file_get_contents('w:/tmp/import.xml')));
если передать именно переменную files, то 'files=' . urlencode(file_get_contents('w:/tmp/import.xml'))
 

ShamanRnD

Новичок
не помогло :( все тоже самое только xml теперь выглядит так
PHP:
------------------------------a13b1b781485
Content-Disposition: form-data; name="files"

%3C%3Fxml+version%3D%221.0%22+encoding%3D%22UTF-8%22%3F%3E%0D%0A%3C%D0%9A%D0%BE%D0%BC%D0%B

UPD: Добавил заголовок "Content-Type: application/x-www-form-urlencoded", и сделал так
curl_setopt($curl, CURLOPT_POSTFIELDS, file_get_contents('w:/tmp/import.xml'));
Пришло то что надо!
Спасибо огромное!
 
Сверху