0

Curl を使用して在庫ファイルを Amazon にアップロードしようとしています。自分のアカウントと在庫アップロード ページにログインできますが、ファイルがアップロードされるたびに、このアップロードから処理されたレコード数 - ゼロと表示されるため、正しいパスを設定できないようです。パスが間違っていると思います。「@/home/path-to-file/file-name.txt」を使用していますが、何が間違っていますか? アップロードは成功しましたが、システムがファイルを見つけられないようです。

<?php

$URL = 'https://sellercentral.amazon.com/gp/item-manager/ezdpc/uploadInventory.html/ref=ag_invfile_mmap_home';

$ch  = curl_init();

curl_setopt($ch, CURLOPT_URL, $URL);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.13) Gecko/20101206 Ubuntu/10.10 (maverick) Firefox/3.6.13');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 1);        
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);

$page = curl_exec($ch);


$postFields['uploadType']    = 'PriceAndQty';
$postFields['uploadFileName']    = '@/home/path_to_file/inventory_file.txt';

$post = '';

foreach($postFields as $key => $value) {
    $post .= $key . '=' . urlencode($value) . '&';
}

$post = substr($post, 0, -1);

curl_setopt($ch, CURLOPT_REFERER, $URL);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);

$page = curl_exec($ch); // make request
4

1 に答える 1

1

私の知る限り、並んでいます

curl_setopt($ch, CURLOPT_POSTFIELDS, $post);

$postファイルを添付する場合は、配列にする必要があります。配列または文字列 - 異なるフォーム コンテンツ タイプを作成します。

詳細については、 PHP のドキュメントを参照してください。

PHP 5.2.0 以降、ファイルが @ 接頭辞付きでこのオプションに渡される場合、値は配列でなければなりません。

于 2012-11-20T17:47:21.393 に答える