为了账号安全,请及时绑定邮箱和手机立即绑定

使用 cURL 将 Pdf 文件上传到另一个网站

使用 cURL 将 Pdf 文件上传到另一个网站

PHP
德玛西亚99 2023-04-28 14:44:31
特别是与这个特定的线程有关使用 php 将文件上传到网站我想在 PHP 上使用 cURL 来实现这个。我该如何设置?以下是我尝试过的。请注意,我只是通过添加我尝试过的代码来编辑它。<?php if(isset($_POST["submit"])){ $errors= array();// $name = $_FILES['fileToUpload']['name'];  $size = $_FILES['fileToUpload']['size'];  $type = $_FILES['fileToUpload']['type'];  $tmp_name = $_FILES['fileToUpload']['tmp_name'];  $upload_ok =1; $file_ext=strtolower(end(explode('.',$_FILES['fileToUpload']  ['name'])));// $extensions= array("pdf","jpeg","jpg","png"); $jj = file_get_contents($_FILES['fileToUpload']['tmp_name']); $mj = base64_encode($jj); if(in_array($file_ext,$extensions)=== false){  $errors[]="vvvvv."; }  if($size >= xxx){  $errors[]='xxx;' } if(empty($errors)==true){  echo  "Success </br>";  $request  = "xxxxxxxxx";  $headers = array(    "Authorization: Bearer xxxxxx",     "Content-type => multipart/form-data",     "Accept:application/json",  );  $data = [     'voucher_data' => 'base64_encode($tmp_name)',   'callback_url' => 'xxxxxxxxx'  ];  $curl = curl_init();  curl_setopt_array($curl, array(    CURLOPT_URL => "xxxxxxxxxx",    CURLOPT_RETURNTRANSFER => true,    CURLOPT_ENCODING => "",    CURLOPT_MAXREDIRS => 10,    CURLOPT_TIMEOUT => 30,    CURLOPT_FOLLOWLOCATION => true,    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,    CURLOPT_CUSTOMREQUEST => "POST",    CURLOPT_POSTFIELDS =>  $data,    CURLOPT_HTTPHEADER => $headers  ));  $response = curl_exec($curl);  curl_close($curl);  var_dump($response);  }else{  print_r($errors);  }?>我尝试按照下面的建议使用 curl_file_create($mj) 但在 var_dump 上...它说 bool(false)
查看完整描述

2 回答

?
海绵宝宝撒

TA贡献1809条经验 获得超8个赞

好吧,在尝试了很多不同的方法之后,我直接将这个值传递给了 post 字段,而不是将它用作数组

CURLOPT_POSTFIELDS => “foo=$mj&callbackurl=url”,

它奏效了。这就是我被困的地方。我用另一种方式做了,但没有用。每种情况都是独一无二的。有人可能也需要这个。


查看完整回答
反对 回复 2023-04-28
?
梦里花落0921

TA贡献1772条经验 获得超5个赞

我看到您想发出一个请求,将文件上传到您自己以外的另一台服务器。


在 PHP 5.5 之后,有一个名为 的函数curl_file_create,顾名思义,它用于上传文件。


$post = array (

    'extra_info' => '123456', // If required.. like user_id for avatar

    'file_contents' => curl_file_create ('path/to/file');

);


$ch = curl_init ($url);

curl_setopt ($ch, CURLOPT_POST, 1);

curl_setopt ($ch, CURLOPT_POSTFIELDS, $post);

curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);

$result=curl_exec ($ch);

curl_close ($ch); 

如果您不想使用它,那么有一个非常简单的方法:


$args = [];


$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $url);

curl_setopt($ch, CURLOPT_POST, 1);


$args['file'] = '@/path/to/file';

curl_setopt($ch, CURLOPT_POSTFIELDS, $args);

curl_setopt($ch, CURLOPT_SAFE_UPLOAD, false);

curl_close ($ch); 


查看完整回答
反对 回复 2023-04-28
  • 2 回答
  • 0 关注
  • 142 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信