使用CURL上传文件

使用CURL上传文件,第1张

近日再使用一个第三方接口的时候,使用curl调用一个上传文件的接口。

再多次失败后,终于找到了真经!!!

言归正传~

PHP的cURL支持通过给CURL_POSTFIELDS传递关联数组(而不是字符串)来生成multipart/form-data的POST请求。

PHP的cURL支持通过在数组数据中,使用“@+文件全路径”的语法附加文件,供cURL读取上传

这与命令行直接调用cURL程序的语法是一致的:

php5.5开始引入了新的CURLFile类用来指向文件。CURLFile类也可以详细定义MIME类型、文件名等可能出现在multipart/form-data数据中的附加信息。推荐使用CURLFile替代旧的@语法:

使用CURL上传文件

使用ftp用curl命令上传文件方法:

第一种:

server端有现成的ftpserver:

上传的option是 -T

比如我们向ftp传一个文件: curl -T localfile -u name:passwd ftp://upload_site:port/path/

curl -T hadoop_oom.log -u user:1234567 ftp://1.1.1.1/

第二种:

nginx上传: (需要加上--with-http_dav_module模块 )

./configure --prefix=/usr/local/nginx --user=www --group=www --with-http_stub_status_module --with-http_ssl_module --with-http_dav_module

make &&make install

要创建上传的临时目录

mkdir -p /dev/shm/client_body_temp

nginx http段加入:

client_body_temp_path /dev/shm/client_body_temp 1 2

client_max_body_size 1024m#这个根据实际的情况,如有大文件upload需要加大,不然nginx抛413 error

然后:

server

{

listen 80

server_name 1.1.1.1

index index.html index.htm index.php

root html

autoindex on

dav_methods PUT#这个是重点默认不允许PUT

测试:

curl -T hadoop_oom.log

安全注意事项:

一般需要单独location一个目录单独做upload用。或者这个nginx只做upload上传单一用途。

然后就是nginx allow了,一般机房都是内网打通的,只允许idc内网才能PUT。不然就能任意PUT到你的upload机器了。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/12102494.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存