curl上传图片文件

为了优化网站,需要做静态化和,图片分离

暂时想到的方式是:

1,php//input  流方式上传到远程服务器

2,阿里云oss收费服务

3,curl上传图片

4,phpftp上传图片

5, 服务器同步文件夹,定时同步图片

下面先来个curl的原理

<!--test.com/index.html 提交页面-->
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>test</title>
</head>
<body>
<form action="add.php" method="post" enctype="multipart/form-data">
    <input type="file" name="img">
    <input type="text" name="val" value="test_val">
    <input type="submit" value="submit">
</form>
</body>
</html>
//test.com/add.php
//发送图片
header(‘content-type:text/html;charset=utf8‘);

$ch = @curl_init();
//加@符号curl就会把它当成是文件上传处理
$data = array(‘img‘=>‘@‘. dirname(__FILE__).‘/test2.jpg‘);

//下面的@是为了屏蔽错误输出,如果不加的话,也能上传成功,不过会报
//Deprecated: curl_setopt(): The usage of the @filename API for file uploading is deprecated. 这是版本问题,如果要彻底解决,看文章下面的参考文章。

@curl_setopt($ch,CURLOPT_URL,"http://test2.com/file.php");
@curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
@curl_setopt($ch,CURLOPT_POST,true);
@curl_setopt($ch,CURLOPT_POSTFIELDS,$data);
@$result = curl_exec($ch);
@curl_close($ch);
echo json_decode($result);
//test2.com/file.php
//接收图片
if($_FILES){
 $filename = time().‘-‘.$_FILES[‘img‘][‘name‘];
 $tmpname = $_FILES[‘img‘][‘tmp_name‘];
 if(move_uploaded_file($tmpname,dirname(__FILE__).‘/upload/‘.$filename)){
  echo json_encode(‘上传成功‘);
 }else{
  $data = json_encode($_FILES);
  echo $data;
 }
}

参考:http://blog.csdn.net/cyuyan112233/article/details/21007163

如果想用php流的方式发送,但是图片和表单值一起的时候就比较不方便,而且不过表单属性设置了enctype="multipart/form-data"是流是接收不到的

参考:http://www.nowamagic.net/academy/detail/12220523

时间: 2024-11-04 23:38:51

curl上传图片文件的相关文章

PHP5.6通过CURL上传图片@符无效的兼容问题

今天本来想试试一个图片云的API,于是本地做了个上传图片的测试,结果灰常郁闷的发现以前一直用的好好的CURL上传图片居然死活不起作用,本来几分钟搞定的事情,结果折腾了大半天才终于找到原因,居然是兼容性问题,真是无语.. 网上搜索PHP通过CURL上传图片几乎都是类似下面的代码:  以前上传图片都是在图片路径前面增加一个 @符号,如: $file = __DIR__ .'/0634134726bc5b8b.jpg'; $data = array('mypic'=>'@'. $file); 1 2

[Ajax] 使用Ajax异步上传图片文件(非Form表单提交)

通过表单Form提交来上传文件的方式这里就不说了: 下面介绍,通过js中使用ajax异步上传图片文件: 新建一个html页面和一个一般处理程序即可: 涉及思路: //发送2次Ajax请求完成js异步上传文件的操作:          //第1次,post 只上传文件,返回文件名name          //第2次,get 根据文件名name定位服务器上的文件,同时根据浏览器传过来的realname重命名服务器上的文件          //(如果有其他参数,也可以通过第2次一并上传) 图片文件

上传图片/文件到服务器

package yao.camera.util; import java.io.ByteArrayOutputStream; import java.io.DataOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.URL; import android.gr

JAVA servlet无刷新上传图片文件并裁剪demo代码(Jcrop)

原文:JAVA servlet无刷新上传图片文件并裁剪demo代码(Jcrop) 源代码下载地址:http://www.zuidaima.com/share/1550463770102784.htm sevlet写的demo,可直接运行.   

利用Spring MVC 上传图片文件

本文转自:http://amcucn.iteye.com/blog/264457.感谢作者 近日在工作当中,需要用到上传图片的功能,然而自己平时学习的时候只会使用struts的上传功能,但因为项目并没有使用struts,而是spring mvc ,最后不得不另寻它路.通过google和百度,看到了一些相关的介绍.经过自己的偿试,最终搞定利用spring mvc 上传文件的功能,完成图片的上传.如果只是为了上传图片,可以通过限制扩展名的形式达到目的.下面给出关键的代码部分. 关于spring的配置

Ajax上传图片文件到服务器

1 <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="FileUploadByJs.aspx.cs" Inherits="WebApplication1.UI.FileUploadByJs" %> 2 3 <!DOCTYPE html> 4 5 <html xmlns="http://www.w3.org/1999/xht

上传图片文件

此处上传文件,使用FileUpload控件. 图片上传 :<asp:FileUpload ID="FileUpload1" runat="server" onchange="PreviewImg(this)" /> <asp:HiddenField ID="hildimage" runat="server" /> 下面是代码: public void upload_Click() {

html+php上传图片文件到服务器

html+php上传图片文件到服务器 一.html代码 1 <body> 2 <form action="" method="post" enctype="multipart/form-data" name="upload_form"> 3 <label>选择图片文件</label> 4 <input name="imgfile" type="

15 shell之curl下载文件

前言 ????最近忙于离职的工作交接,有日子没学习了,懒惰啊! 正文 需求 譬如某一天我们做了一个软件. 有时我们的软件需要自动根据到网上去获取当前版本是否要更新.如果"网上"需要更新则下载一些必要的文件 shell实现 LOCAL_VER=`cat version` REMOTE_VER=`curl http://[email protected]@@..com/test/conf.txt -s | sed -n '2p'` # -s 静默模式,不显示细节 #echo $REMOTE