使用PHP向网站提交文件?

使用PHP向网站提交文件?,php,forms,file-upload,Php,Forms,File Upload,好的,所以我想在下面的网站()上提交图片,但我不知道怎么做。我在谷歌上找不到任何东西 下面是我正在使用的代码 $url = "http://newocr.com/"; $urlref = "http://newocr.com/"; $ch = curl_init(); $data_array["userfile"] = $imgpath; $data_array["url"] = ''; $data_array["1"] = 'eng'; $data_array["preview"] =

好的,所以我想在下面的网站()上提交图片,但我不知道怎么做。我在谷歌上找不到任何东西

下面是我正在使用的代码

$url = "http://newocr.com/";
$urlref = "http://newocr.com/";
$ch = curl_init();

$data_array["userfile"] =  $imgpath;
$data_array["url"]  =  '';
$data_array["1"] = 'eng';
$data_array["preview"] ='1';

  if(is_array($data_array))
    {
    # Convert data array into a query string (ie animal=dog&sport=baseball)
    foreach ($data_array as $key => $value) 
        {
        if(strlen(trim($value))>0)
            $temp_string[] = $key . "=" . urlencode($value);
        else
            $temp_string[] = $key;
        }
    $query_string = join('&', $temp_string);
    }

    if(isset($query_string))
        curl_setopt ($ch, CURLOPT_POSTFIELDS, $query_string);
        curl_setopt ($ch, CURLOPT_POST, TRUE); 
        curl_setopt ($ch, CURLOPT_HTTPGET, FALSE); 

curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_REFERER, $urlref);
curl_setopt($ch, CURLOPT_VERBOSE, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
$return = curl_exec($ch);

echo $return;
$imgpath变量指定文件存储在我的硬盘上的位置,但 文件没有从我的硬盘上传到网站。但当我使用存储在我的网络主机上的文件的url而不是pc上的文件路径来做同样的事情时,它就起作用了

谁能告诉我怎么做。如何直接从硬盘上传此文件而不是使用URL


谢谢

注意:您的整个foreach循环毫无意义。curl很乐意为POSTFIELDS opt获取一个数组,并自动为您完成所有urlbuilding/encoding操作

要让curl进行上传,您必须告诉它您正在传递一个文件路径:

$opts = array(
  'foo' => 'bar',
  'file' => '@/path/to/file/on/server'
);
curl_setopt($ch, CURLOPT_POSTFIELDS, $opts);
注意数组中的
@
——这是一个提示,提示curl它是一个文件路径,您希望上传它。还请注意,完全没有循环/手动编码/url构建


还请注意,在最近的curl/php实现中,这已升级为专用选项。

参数
url
需要远程服务器可以访问的公共url。将文件名放在那里不起作用,因为远程服务器无法下载该文件。这是一个键入错误,我更正了,请重新阅读。好的,你能告诉我如何设置路径吗?它与脚本位于同一目录中对不起,但如果你无法找到文件路径,那么你就不应该开始编程了。事实上,我刚刚开始,我没有遇到任何与文件路径有关的事情,这就是为什么