网上有找到一个源码,但是太花俏了,用的全是JS,我完全看不懂。
所以在这请教大哥们能帮我写个简单的,只需要提交上传取返回地址。
我菜鸟,太复杂看不懂!
https://sm.ms/api/upload 这是post API接口
这是提交参数描述
参数名称 类型 是否必须 描述
smfile File 是 表单名称。上传图片用到
ssl Bool 否 是否使用 https 输出,强制开启
format String 否 输出的格式。可选值有 json、xml。默认为 json
这是返回值
名称 类型 示例值 描述
code String success 上传文件状态。正常情况为 success。出现错误时为 error
filename String smms.jpg 上传文件时所用的文件名
storename String 561cc4e3631b1.png 上传后的文件名
size Int 187851 文件大小
width Int 1157 图片的宽度
height Int 680 图片的高度
hash String nLbCw63NheaiJp1 随机字符串,用于删除文件
delete String https://sm.ms/api/delete/nLbCw63NheaiJp1 删除上传的图片文件专有链接
url String https://ooo.0o0.ooo/2015/10/13/561cfc3282a13.png 图片服务器地址
path String /2015/10/13/561cfc3282a13.png 图片的相对地址
msg String No files were uploaded. 上传图片出错时将会出现
问题已解决!!!!!!!!!!!!!!
<?php
$url = "https://sm.ms/api/upload";
$post_data = array(
"smfile" => "@".str_replace("\\","/",realpath("1.gif"))
);
$ch = curl_init();
curl_setopt($ch , CURLOPT_URL , $url);
curl_setopt($ch , CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch , CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
curl_setopt($ch , CURLOPT_POSTFIELDS, $post_data);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); // https请求 不验证证书和hosts
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
$output = curl_exec($ch);
curl_close($ch);
if( $output!==false){
$obj=json_decode($output,true);
echo $obj['data']['url'];
}
else echo "提交失败!";
?>
CURL DEMO
function curl_post_https($url,$data){ // 模拟提交数据函数
$curl = curl_init(); // 启动一个CURL会话
curl_setopt($curl, CURLOPT_URL, $url); // 要访问的地址
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); // 对认证证书来源的检查
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 1); // 从证书中检查SSL加密算法是否存在
curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); // 模拟用户使用的浏览器
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); // 使用自动跳转
curl_setopt($curl, CURLOPT_AUTOREFERER, 1); // 自动设置Referer
curl_setopt($curl, CURLOPT_POST, 1); // 发送一个常规的Post请求
curl_setopt($curl, CURLOPT_POSTFIELDS, $data); // Post提交的数据包
curl_setopt($curl, CURLOPT_TIMEOUT, 30); // 设置超时限制防止死循环
curl_setopt($curl, CURLOPT_HEADER, 0); // 显示返回的Header区域内容
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); // 获取的信息以文件流的形式返回
$tmpInfo = curl_exec($curl); // 执行操作
if (curl_errno($curl)) {
echo 'Errno'.curl_error($curl);//捕抓异常
}
curl_close($curl); // 关闭CURL会话
return $tmpInfo; // 返回数据,json格式
}
$data就是POST的数据 可以是file
你自己抓包跟着写就行 这样还不会的话 可以考虑转行了 curl功能开启要在ini配置文件取消注释
$url = "https://sm.ms/api/upload";
$post_data = array(
"smfile" => "@".str_replace("\\","/",realpath("a.txt"))
);
$ch = curl_init();
curl_setopt($ch , CURLOPT_URL , $url);
curl_setopt($ch , CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch , CURLOPT_POST, 1);
curl_setopt($ch , CURLOPT_POSTFIELDS, $post_data);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); // https请求 不验证证书和hosts
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
$output = curl_exec($ch);
curl_close($ch);
echo $output;
@qq_24597781
看看哪里有问题呀。
<?php
function curl_post_https($url,$data){ // 模拟提交数据函数
$curl = curl_init(); // 启动一个CURL会话
curl_setopt($curl, CURLOPT_URL, $url); // 要访问的地址
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); // 对认证证书来源的检查
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 1); // 从证书中检查SSL加密算法是否存在
curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); // 模拟用户使用的浏览器
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); // 使用自动跳转
curl_setopt($curl, CURLOPT_AUTOREFERER, 1); // 自动设置Referer
curl_setopt($curl, CURLOPT_POST, 1); // 发送一个常规的Post请求
curl_setopt($curl, CURLOPT_POSTFIELDS, $data); // Post提交的数据包
curl_setopt($curl, CURLOPT_TIMEOUT, 30); // 设置超时限制防止死循环
curl_setopt($curl, CURLOPT_HEADER, 0); // 显示返回的Header区域内容
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); // 获取的信息以文件流的形式返回
$tmpInfo = curl_exec($curl); // 执行操作
if (curl_errno($curl)) {
echo 'Errno'.curl_error($curl);//捕抓异常
}
curl_close($curl); // 关闭CURL会话
return $tmpInfo; // 返回数据,json格式
}
if (isset($_FILES['smfile'])){
$smfile=$_FILES['smfile'];
echo curl_post_https("https://sm.ms/api/upload",$smfile);
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title></title>
</head>
<body>
<form method="post" enctype="multipart/form-data">
<input name="smfile" type="file"/><input name="" type="submit" value="上传" />
</form>
</body>
</html>