Java和PHP兩種方式實現上傳圖片到新浪微博的圖床
這幾天遇到一個需求,需要將圖片上傳到新浪微博的圖傳,研究了一下, 特此記錄
1.模擬登陸,獲取cookie
登入地址為:
https://login.sina.com.cn/sso/login.php?client=ssologin.js(v1.4.15)&_=1403138799543
引數為:entry=sso&gateway=1&from=null&savestate=30&useticket=0&pagerefer=&vsnf=1&su=" + base64username+"
&service=sso&sp=" + password + "&sr=1920*1080&encoding=UTF-8&cdult=3&domain=sina.com.cn&prelt=0&returntype=TEXT
然後使用post請求,獲取cookie,可以從返回的cookie中找到(SUB:)開始的那段,為精簡後的cookie2.上傳圖片
地址為:
http://picupload.service.weibo.com/interface/pic_upload.php?mime=image%2Fjpeg&data=base64&url=0&markpos=1&logo=&nick=0&marks=1&app=miniblog&cb=http://weibo.com/aj/static/upimgback.html?_wv=5&callback=STK_ijax_" + new Date().getTime();
然後post提交,解析返回的json串,獲取圖片的pid
3.獲取上傳後的圖片地址
public static String getImageUrl(String pid, int sizeidx, boolean https) {
String[] sizeArr = new String[]{"large", "mw1024", "mw690", "bmiddle", "small", "thumb180", "thumbnail", "square"};
pid = pid.trim();
String size = sizeArr[sizeidx];
// 傳遞 pid
Pattern p = Pattern.compile("^[a-zA-Z0-9]{32}$");
Matcher m = p.matcher(pid);
if (m.matches()) {
System.out.println("匹配了");
CRC32 crc32 = new CRC32();
crc32.update(pid.getBytes());
return (https ? "https" : "http") + "://" + (https ? "ws" : "ww")
+ ((crc32.getValue() & 3) + 1) + ".sinaimg.cn/" + size
+ "/" + pid + "." + (pid.charAt(21) == 'g' ? "gif" : "jpg");
}
// // 傳遞 url
String url = pid;
Pattern p1 = Pattern.compile("^(https?://[a-z]{2}d.sinaimg.cn/)(large|bmiddle|mw1024|mw690|small|square|thumb180|thumbnail)(/[a-z0-9]{32}.(jpg|gif))$");
Matcher m1 = p1.matcher(url);
if (m1.find()) {
return m.group(1) + size + m.group(3);
}
return null;
}
詳細程式碼見:https://download.csdn.net/download/x5201314j/10322083
相關文章
- 使用Vue實現圖片上傳的三種方式Vue
- PHP 指令碼實現 Markdown 文章上傳到七牛圖床PHP指令碼圖床
- 用Vue來實現圖片上傳多種方式Vue
- Java實現圖片上傳到伺服器,並把上傳的圖片讀取出來Java伺服器
- PHP實現圖片(檔案)上傳PHP
- Retrofit2.0:上傳圖片到PHPPHP
- Ajax+PHP實現非同步圖片上傳PHP非同步
- php圖片上傳之圖片轉換PHP
- PHP上傳圖片類PHP
- 兩種方式實現輪播圖
- Retrofit+RxJava上傳圖片上傳圖片到後臺RxJava
- java,springboot + thymeleaf 上傳圖片、刪除圖片到伺服器、本地,壓縮圖片上傳(有些圖片會失真),原圖上傳JavaSpring Boot伺服器
- 搭建微博圖床圖床
- 原生jq實現圖片上傳到伺服器伺服器
- vue 實現貼上上傳圖片Vue
- 實現圖片染色效果的三種方式
- formData原生實現圖片上傳ORM
- django 實現圖片上傳和顯示操作Django
- PHP配置CKEditor上傳圖片PHP
- PHP+jQuery+Ajax實現多圖片上傳介紹PHPjQuery
- 解決新浪微博圖床 403 批次下載圖片等資源(以 MMChat 資料集為例)圖床
- php 非同步上傳圖片幾種方法總結PHP非同步
- mac下使用指令碼為圖片加水印、上傳圖床Mac指令碼圖床
- jsp+springmvc實現檔案上傳、圖片上傳和及時預覽圖片JSSpringMVC
- 實現圖片懶載入的三種方式
- 使用tinypng對需要上傳Gitee圖床的圖片進行壓縮Gitee圖床
- java 上傳圖片 cxf,servlet,spring 標準方式JavaServletSpring
- 兩種純CSS方式實現hover圖片pop-out彈出效果CSS
- thinkphp達到UploadFile.class.php圖片上傳功能PHP
- element-ui+Vue實現的圖片上傳UIVue
- 新浪微博圖床架構解析圖床架構
- 短視訊平臺開發,圖片上傳和圖片預覽功能實現
- node+express實現圖片上傳功能Express
- layui中實現上傳圖片壓縮UI
- 通過API介面實現圖片上傳API
- HTML5實現圖片上傳2HTML
- Android中將方形圖片擷取成圓形的兩種實現方式Android
- Java學習筆記(一)上傳圖片到七牛雲的詳細實現流程Java筆記