我正在尝试使用CKan方法 resource_create 。
实际上,我想用一个存储在本地的csv文件创建一个新资源,该文件是我以前使用Ckan API创建的一个包。
我正在使用函数 ckan.logic.action.create.resource_create (请参阅https://docs.ckan.org/en/2.8/api/#ckan.logic.action.create.resource_create
我在GitHub上找到了一些代码,并试图做到这一点,但是它没有使用文件创建资源。
这是我的代码:
$httpheader = array(
'Content-Type' => 'application/json',
'Authorization' => 'Authorization:MyCkanKey'
);
$filepath = "./data.csv";
$file="";
if( function_exists('curl_file_create') ){
$finfo = finfo_open(FILEINFO_MIME_TYPE) ;
$mimetype = finfo_file($finfo ,$filepath ) ;
$file = curl_file_create($filepath, $mimetype ,$filepath ) ;
echo " function exists <br> Variable file= ";
print_r ($file) ;
}
else{
$file = "@$filepath;filename="."datalogger";
echo "function Doesnt exists";
}
$curlpost = array(
'package_id' => "8940920a-68ec-4b9f-bbff-b65477ab8b95",
'upload' =>$file,
'format' => "csv",
'description' => "Des donnees de releve de temperatures",
'name' => "datalogger"
);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://192.168.2.223/api/3/action/resource_create");
curl_setopt($ch, CURLOPT_HTTPHEADER, $httpheader);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $curlpost);
$returnoutput = curl_exec($ch);
echo "<h3> curl output resource : ";
print_r($returnoutput);
echo "</h3>";
函数参数位于数组 $ curlpost 中。
创建后,我知道程序包ID。