diff --git a/README.md b/README.md index e80518d..cbfaede 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,9 @@ -超简Api图床 V1.0 —— 专为Api而生 +超简Api图床 V1.1 —— 专为Api而生 =============== -超简Api图床 V1.0 基于ThinPhP 5.1实现的一套Api图床程序,主要包含以下特色: +超简Api图床 V1.1 基于ThinkPHP 5.1实现的一套Api图床程序,主要包含以下特色: + 无数据库模式,简单配置,一键搭建 + 第三方接口接入,不占用服务器空间 @@ -14,7 +14,7 @@ + 通讯密钥过滤恶意上传 + 支持跨域提交访问 + 免费、开源 - + + 支持简单返回,直接返回图片网址 > 超简Api图床的运行环境要求PHP5.6以上。 @@ -27,8 +27,10 @@ + 默认通讯密钥为:123456 + 保存配置后,即可开始使用 - > 如果页面显示【超简图床 -- 为您提供Api服务!】,说明您的服务器默认配置的首页为index.php,请您访问localhost/public/index.html进入主页 + > 升级说明:请您直接下载新版本覆盖旧版本即可! + > 如果页面显示【超简图床 -- 为您提供Api服务!】,说明您的服务器默认配置的首页为index.php,请您访问localhost/public/index.html进入主页 + ## 使用 + 根据主页显示的Api接口,调用Api接口,将会返回对应的图片地址 @@ -40,6 +42,19 @@ + https://blog.csdn.net/alen_xiaoxin/article/details/60783141 + https://www.jb51.net/article/94061.htm +## 更新记录 + + + v1.1(2018.10.08) + + Api增加新参数onlyUrl, + + 当onlyUrl为1时,如果上传成功,只返回图片链接,如果上传失败,则返回字符串 null + + 当onlyUrl不为1或者不传入时,返回内容同v1.0版本,请参照Api文档 + + 增加开发者调用示例,请在SDK目录查看 + + 修复已知Bug + + + + v1.0(2018.10.02) + + 初版发布 + ## 版权信息 超简Api图床遵循 MIT License 开源协议发布,并提供免费使用。 diff --git a/SDK/imgApiSdk.java b/SDK/imgApiSdk.java new file mode 100644 index 0000000..9516b2c --- /dev/null +++ b/SDK/imgApiSdk.java @@ -0,0 +1,129 @@ + + +import org.springframework.web.multipart.MultipartFile; +import sun.misc.BASE64Encoder; + +import java.io.*; +import java.net.URL; +import java.net.URLConnection; + +/** + * 超简图床JAVA版本SDK + */ +public class imgApiSdk { + + /** + * 上传图片到超简图床 + * @param apiUrl api地址,请在图床设置页面查看 + * @param apiKey 通讯秘钥,请在图床设置页面查看 + * @param file 表单的图片文件 + * @return + */ + public static String uploadToImgApi(String apiUrl, String apiKey, MultipartFile file){ + String base64 = null; + File f = null; + String res = null; + try { + f=File.createTempFile("tmp", null); + file.transferTo(f); + f.deleteOnExit(); //使用完成删除文件 + + FileInputStream inputFile = new FileInputStream(f); + + byte[] buffer = new byte[(int) f.length()]; + inputFile.read(buffer); + inputFile.close(); + base64 = new BASE64Encoder().encode(buffer); + base64 = base64.replaceAll("[\\s*\t\n\r]", ""); + + String param = "key="+apiKey+"&onlyUrl=1&imgBase64="+getURLEncoderString(base64); + + + res = sendPost(apiUrl,param); + + + + } catch (IOException e) { + e.printStackTrace(); + } + + return res; + } + + /** + * 向指定 URL 发送POST方法的请求 + * + * @param url + * 发送请求的 URL + * @param param + * 请求参数,请求参数应该是 name1=value1&name2=value2 的形式。 + * @return 所代表远程资源的响应结果 + */ + private static String sendPost(String url, String param) { + PrintWriter out = null; + BufferedReader in = null; + String result = ""; + try { + URL realUrl = new URL(url); + // 打开和URL之间的连接 + URLConnection conn = realUrl.openConnection(); + // 设置通用的请求属性 + conn.setRequestProperty("accept", "*/*"); + conn.setRequestProperty("connection", "Keep-Alive"); + conn.setRequestProperty("user-agent", + "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)"); + // 发送POST请求必须设置如下两行 + conn.setDoOutput(true); + conn.setDoInput(true); + // 获取URLConnection对象对应的输出流 + out = new PrintWriter(conn.getOutputStream()); + // 发送请求参数 + out.print(param); + // flush输出流的缓冲 + out.flush(); + // 定义BufferedReader输入流来读取URL的响应 + in = new BufferedReader( + new InputStreamReader(conn.getInputStream())); + String line; + while ((line = in.readLine()) != null) { + result += line; + } + } catch (Exception e) { + System.out.println("发送 POST 请求出现异常!"+e); + e.printStackTrace(); + } + //使用finally块来关闭输出流、输入流 + finally{ + try{ + if(out!=null){ + out.close(); + } + if(in!=null){ + in.close(); + } + } + catch(IOException ex){ + ex.printStackTrace(); + } + } + return result; + } + + /** + * URL编码 + * @param str 需要编码的文本 + * @return 编码后的文本 + */ + private static String getURLEncoderString(String str) { + String result = ""; + if (null == str) { + return ""; + } + try { + result = java.net.URLEncoder.encode(str, "UTF-8"); + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } + return result; + } +} diff --git a/application/index/controller/Index.php b/application/index/controller/Index.php index d7dfd54..767b696 100644 --- a/application/index/controller/Index.php +++ b/application/index/controller/Index.php @@ -11,7 +11,7 @@ class Index { public function index() { - return '超简图床 -- 为您提供Api服务!(您看到此页面说明您的服务器默认配置的首页为index.php,请您访问localhost/public/index.html进入项目主页)'; + return ''; } @@ -37,17 +37,19 @@ public function upImg(){ if ($type == 1){ //使用搜狗图床 $res = SougouApi::Upload(); - return json($res); }else if ($type == 2){ //使用新浪图床 $res = SinaApi::Upload(); - return json($res); }else if ($type == 3){ //使用新浪图床 $res = $this->upload(); - return json($res); }else{ - return json(array("code"=>"-1","msg"=>"类型错误","img"=>null)); + $res = array("code"=>"-1","msg"=>"类型错误","img"=>null); + } + if (input("onlyUrl")==1){ + return $res['img']; + }else{ + return json($res); } diff --git a/public/api.html b/public/api.html index d1af095..cc03c5f 100644 --- a/public/api.html +++ b/public/api.html @@ -174,7 +174,14 @@
请求参数
- + +
+ +
+ +
+
参数说明
+
@@ -391,15 +398,24 @@ $("#outPut").val($("#outPut").val()+"发起Post请求...\n"); - $("#outPut").val($("#outPut").val()+"请求返回:\n"); + $.post(url,"key="+key+"&imgBase64="+encodeURIComponent(tmp[1]),function (data) { + $("#outPut").val($("#outPut").val()+"请求返回:\n"); $("#outPut").val($("#outPut").val()+JSON.stringify(data)+"\n"); $("#outPut").val($("#outPut").val()+"返回错误代码为:"+data.code+"(1为成功,2为失败)\n"); $("#outPut").val($("#outPut").val()+"返回接口信息为:"+data.msg+"(接口调用的详细信息)\n"); $("#outPut").val($("#outPut").val()+"返回图片链接为:"+data.img+"(成功返回图片链接,失败返回null)\n"); + + $("#outPut").val($("#outPut").val()+"若配置onlyUrl为1,则请求返回(仅有img字段,成功返回图片链接,失败返回null):\n"); + $("#outPut").val($("#outPut").val()+data.img+"\n"); + }); + + + + } diff --git a/public/setting.html b/public/setting.html index 7dce455..69a44f5 100644 --- a/public/setting.html +++ b/public/setting.html @@ -114,7 +114,7 @@

系统配置