【问题标题】:Upload an inventory file to Amazon using Curl使用 Curl 将库存文件上传到亚马逊
【发布时间】:2012-11-20 05:04:15
【问题描述】:

我正在尝试使用 Curl 将库存文件上传到亚马逊。我能够登录到我的帐户并进入库存上传页面,但似乎无法设置正确的路径,因为每次上传文件时,它都会指示从此上传处理的记录数 - 零。我想我走错了路。我正在使用“@/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

【问题讨论】:

    标签: php file-upload curl amazon


    【解决方案1】:

    据我所知,排队

    curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
    

    $post 需要为数组才能附加文件。数组或字符串 - 生成不同的表单内容类型。

    您可以在PHP documentation找到详细信息:

    从 PHP 5.2.0 开始,如果文件以 @ 前缀传递给此选项,则 value 必须是数组。

    【讨论】:

    • $post 是一个数组。一切正常,代码执行,但我认为文件路径错误
    • 不是数组,看你的代码。您从数组$postFields 中创建字符串$post,将行改为curl_setopt($ch, CURLOPT_POSTFIELDS, $postFields);,它会起作用。
    • 如果您对文件路径有疑问,可以使用echo is_file($file_path);,1表示您提供的路径正确,0表示不正确
    • 嗨 Ranty,看看下面这行:$post = ''; foreach($postFields as $key => $value) { $post .= $key . '=' 。 urlencode($value) 。 '&'; } 它需要 $postFields 并将它们变成一个数组
    • $post 是一个字符串。你可以做var_dump($post);,它会告诉你它是一个字符串。当您执行curl_setopt($ch, CURLOPT_POSTFIELDS, $post); 时,它会查看$post 并看到String 并忽略文件附件。您需要使用array,在您的情况下是$postFields
    猜你喜欢
    • 2014-02-09
    • 2017-07-11
    • 1970-01-01
    • 2014-06-06
    • 2013-10-10
    • 2018-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多