php使用curl 实现远程的文件的增删查改的函数

112 阅读1分钟
  1. 文件增加(上传)
function remote_file_add($url, $file_path) {
    $ch = curl_init();
    $fp = fopen($file_path, 'r');
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, array(
        'file' => '@' . $file_path
    ));
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
    curl_setopt($ch, CURLOPT_INFILE, $fp);
    curl_setopt($ch, CURLOPT_INFILESIZE, filesize($file_path));

    $result = curl_exec($ch);
    curl_close($ch);
    fclose($fp);

    return $result;
}

使用示例:

$url = 'http://example.com/upload.php';
$file_path = "local_file_path";
$result = remote_file_add($url, $file_path);

2. 文件删除

function remote_file_delete($url, $file_id) {
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, array(
        'id' => $file_id,
        'action' => 'delete'
    ));
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);

    $result = curl_exec($ch);
    curl_close($ch);

    return $result;
}

使用示例:

$url = 'http://example.com/delete.php';
$file_id = 'file_id';
$result = remote_file_delete($url, $file_id);

3. 文件查询(下载)

function remote_file_query($url, $file_id, $save_path) {
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, array(
        'id' => $file_id,
        'action' => 'query'
    ));
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
    $fp = fopen($save_path,"w");
    curl_setopt($ch, CURLOPT_FILE, $fp);

    $result = curl_exec($ch);
    curl_close($ch);
    fclose($fp);

    return $result;
}

使用示例:

$url = 'http://example.com/query.php';
$file_id = 'file_id';
$save_path = 'local_file_path';
$result = remote_file_query($url, $file_id, $save_path);

4. 文件修改

function remote_file_update($url, $file_id, $file_path) {
    $ch = curl_init();
    $fp = fopen($file_path, 'r');
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, array(
        'id' => $file_id,
        'action' => 'update',
        'file' => '@' . $file_path
    ));
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
    curl_setopt($ch, CURLOPT_INFILE, $fp);
    curl_setopt($ch, CURLOPT_INFILESIZE, filesize($file_path));

    $result = curl_exec($ch);
    curl_close($ch);
    fclose($fp);

    return $result;
}

使用示例:

$url = 'http://example.com/update.php';
$file_id = 'file_id';
$file_path = 'local_file_path';
$result = remote_file_update($url, $file_id, $file_path);