C#新增永久圖文素材
新增永久圖文素材
接口調用請求說明
http請求方式: POST,https協議 https://api.weixin.qq.com/cgi-bin/material/add_news?access_token=ACCESS_TOKEN
//同步公眾號素材
JavaScriptSerializer Jss=new JavaScriptSerializer();
string respText=cwebcms.Web.user.BasicApi.WebRequestPostOrGet(string.Format("https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={0}&secret={1}", AppID, AppSecret), "");
Dictionary<string, object> respDic=(Dictionary<string, object>)Jss.DeserializeObject(respText);
string accessToken=respDic["access_token"].ToString();
//上傳封面圖片獲取media_id
string ssPath=Server.MapPath(uc.PicURL);
string re=cwebcms.Common.Public.add_material("image/jpeg", ssPath, accessToken);
string thumb_media_id="";
respDic=(Dictionary<string, object>)Jss.DeserializeObject(re);
if (respDic.ContainsKey("media_id"))
{
thumb_media_id=respDic["media_id"].ToString();
}
cwebcms.Common.Public.saveLogFiles(5, "re" + re, "errmsg:", "thumb_media_id:" + thumb_media_id);
//上傳圖文消息內的圖片獲取URL
//替換內容區的所有圖片為素材中的圖片
string content=uc.Content;
string pattern="\\<img\\ [\\s\\S]*?src=['\"]?(?<f>[^'\"\\>\\ ]+)['\"\\>\\ ]";
Regex reg=new Regex(pattern, RegexOptions.Compiled | RegexOptions.IgnoreCase);
Match match=reg.Match(content);
string gPicURL="", img_url="";
int Picnumj=1;
while (match.Success)
{
gPicURL=match.Groups["f"].Value;
ssPath=Server.MapPath(gPicURL);
re=cwebcms.Common.Public.uploadimg(ssPath, accessToken);
respDic=(Dictionary<string, object>)Jss.DeserializeObject(re);
if (respDic.ContainsKey("url"))
{
img_url=respDic["url"].ToString();
}
content=content.Replace(gPicURL, img_url);
Picnumj++;
match=match.NextMatch();
}
string url="https://api.weixin.qq.com/cgi-bin/material/add_news?access_token=" + accessToken;
string str="{" +
"\"articles\": [{" +
"\"title\": \"" + uc.NewsTitle + "\"," +
"\"thumb_media_id\": \"" + thumb_media_id + "\"," +
"\"author\": \"" + uc.Author + "\"," +
"\"digest\": \"" + uc.naviContent + "\"," +
"\"show_cover_pic\": 1," +
"\"content\": \"" + content.Replace("\"", "\'") + "\"," +
"\"content_source_url\": \"https://ft.cwebcrm.cn/mmg/user/view_detail.html?companyid=gzh&id=" + uc.ID + "\"," +
"\"need_open_comment\":1," +
"\"only_fans_can_comment\":1" +
"\"}," +
//若新增的是多圖文素材,則此處應還有幾段articles結構
"\"]" +
"\"} ";
cwebcms.Common.Public.saveLogFiles(5, "@url" + url, "errmsg:", "str:" + str);核心代碼
string media_id="";
string strReturn=cwebcms.Common.Public.PostUrl(@url, str);
cwebcms.Common.Public.saveLogFiles(5, "n", "", "strReturn:" + strReturn);
respDic=(Dictionary<string, object>)Jss.DeserializeObject(strReturn);
if (respDic.ContainsKey("media_id"))
{
media_id=respDic["media_id"].ToString();
}
string sql="update cwebcms_news set media_id='" + media_id + "' where NewsID='" + uc.NewsID + "'";
int n=sd.updatesql(sql);
//上傳封面圖片
上傳圖文消息內的圖片獲取URL
本接口所上傳的圖片不占用公眾號的素材庫中圖片數量的100000個的限制。圖片僅支持jpg/png格式,大小必須在1MB以下。
接口調用請求說明
http請求方式: POST,https協議 https://api.weixin.qq.com/cgi-bin/media/uploadimg?access_token=ACCESS_TOKEN 調用示例(使用curl命令,用FORM表單方式上傳一個圖片): curl -F media=@test.jpg "https://api.weixin.qq.com/cgi-bin/media/uploadimg?access_token=ACCESS_TOKEN"
public static string uploadimg(string file,string accessToken)
{
string fileName=file;
string url=string.Format("https://api.weixin.qq.com/cgi-bin/media/uploadimg?access_token={0}", accessToken);
FileStream fs=new FileStream(file, FileMode.OpenOrCreate, FileAccess.Read);
byte[] fileByte=new byte[fs.Length];
fs.Read(fileByte, 0, fileByte.Length);
fs.Close();
// 設置參數
HttpWebRequest request=WebRequest.Create(url) as HttpWebRequest;
CookieContainer cookieContainer=new CookieContainer();
request.CookieContainer=cookieContainer;
request.AllowAutoRedirect=true;
request.Method="POST";
string boundary=DateTime.Now.Ticks.ToString("X"); // 隨機分隔線
request.ContentType="multipart/form-data;charset=utf-8;boundary=" + boundary;
byte[] itemBoundaryBytes=Encoding.UTF8.GetBytes("\r\n--" + boundary + "\r\n");
byte[] endBoundaryBytes=Encoding.UTF8.GetBytes("\r\n--" + boundary + "--\r\n");
//請求頭部信息
StringBuilder sbHeader= new StringBuilder(
string.Format(
"Content-Disposition:form-data;name=\"media\";filename=\"{0}\"\r\nContent-Type:application/octet-stream\r\n\r\n",
fileName));
byte[] postHeaderBytes=Encoding.UTF8.GetBytes(sbHeader.ToString());
Stream postStream=request.GetRequestStream();
postStream.Write(itemBoundaryBytes, 0, itemBoundaryBytes.Length);
postStream.Write(postHeaderBytes, 0, postHeaderBytes.Length);
postStream.Write(fileByte, 0, fileByte.Length);
postStream.Write(endBoundaryBytes, 0, endBoundaryBytes.Length);
postStream.Close();
HttpWebResponse response=request.GetResponse() as HttpWebResponse;
Stream instream=response.GetResponseStream();
StreamReader sr=new StreamReader(instream, Encoding.UTF8);
string content=sr.ReadToEnd();
return content;
}
新增其他類型永久素材(注意視頻接口不可用,上傳也不審核)
接口調用請求說明
通過POST表單來調用接口,表單id為media,包含需要上傳的素材內容,有filename、filelength、content-type等信息。請注意:圖片素材將進入公眾平臺官網素材管理模塊中的默認分組。
http請求方式: POST,需使用https https://api.weixin.qq.com/cgi-bin/material/add_material?access_token=ACCESS_TOKEN&type=TYPE 調用示例(使用curl命令,用FORM表單方式新增一個其他類型的永久素材,curl命令的使用請自行查閱資料)
public static string add_material(string type, string file, string accessToken)
{
string fileName=file;
string url=string.Format("https://api.weixin.qq.com/cgi-bin/material/add_material?access_token={0}&type={1}", accessToken, type);
FileStream fs=new FileStream(file, FileMode.OpenOrCreate, FileAccess.Read);
byte[] fileByte=new byte[fs.Length];
fs.Read(fileByte, 0, fileByte.Length);
fs.Close();
// 設置參數
HttpWebRequest request=WebRequest.Create(url) as HttpWebRequest;
CookieContainer cookieContainer=new CookieContainer();
request.CookieContainer=cookieContainer;
request.AllowAutoRedirect=true;
request.Method="POST";
string boundary=DateTime.Now.Ticks.ToString("X"); // 隨機分隔線
request.ContentType="multipart/form-data;charset=utf-8;boundary=" + boundary;
byte[] itemBoundaryBytes=Encoding.UTF8.GetBytes("\r\n--" + boundary + "\r\n");
byte[] endBoundaryBytes=Encoding.UTF8.GetBytes("\r\n--" + boundary + "--\r\n");
//請求頭部信息
StringBuilder sbHeader= new StringBuilder(
string.Format(
"Content-Disposition:form-data;name=\"media\";filename=\"{0}\"\r\nContent-Type:application/octet-stream\r\n\r\n",
fileName));
byte[] postHeaderBytes=Encoding.UTF8.GetBytes(sbHeader.ToString());
Stream postStream=request.GetRequestStream();
postStream.Write(itemBoundaryBytes, 0, itemBoundaryBytes.Length);
postStream.Write(postHeaderBytes, 0, postHeaderBytes.Length);
postStream.Write(fileByte, 0, fileByte.Length);
postStream.Write(endBoundaryBytes, 0, endBoundaryBytes.Length);
postStream.Close();
HttpWebResponse response=request.GetResponse() as HttpWebResponse;
Stream instream=response.GetResponseStream();
StreamReader sr=new StreamReader(instream, Encoding.UTF8);
string content=sr.ReadToEnd();
return content;
}
//
public static string PostUrl(string url, string postData)
{
string result="";
HttpWebRequest req=(HttpWebRequest)WebRequest.Create(url);
req.Method="POST";
req.Timeout=5000;//設置請求超時時間,單位為毫秒
req.ContentType="application/json";
byte[] data=Encoding.UTF8.GetBytes(postData);
req.ContentLength=data.Length;
using (Stream reqStream=req.GetRequestStream())
{
reqStream.Write(data, 0, data.Length);
reqStream.Close();
}
HttpWebResponse resp=(HttpWebResponse)req.GetResponse();
Stream stream=resp.GetResponseStream();
//獲取響應內容
using (StreamReader reader=new StreamReader(stream, Encoding.UTF8))
{
result=reader.ReadToEnd();
}
return result;
}
家好,我是Echa。
又到周五啦,提前祝大家周末愉快!今天來分享一些實用的前端工具!
Small Dev Tools 是一個前端工具網站,包含了很多實用的功能,比如JSON解碼器、JSON格式化程序、UTF8編碼、Base64編碼、Base64解碼、CSS格式化程序、CSS壓縮器等。
官網:https://smalldev.tools/
Carbon 是一個在線工具,可以生成漂亮的不同風格的代碼圖片。
官網:https://carbon.now.sh/
UI 設計日報,提供免費優質的 UI 資源。
官網:https://www.uidesigndaily.com/
ColorHunt,即顏色獵人,是一個在線設計配色的網站,其最大的特點就是使用飽和度調配配色方案。每天會根據瀏覽量進行更新排版,并可以直接使用。
官網:https://colorhunt.co/
SCHEME COLOR 是一個在線的配色工具網站,可以根據顏色、類型等查找合適的配色方案。
官網:https://www.schemecolor.com/
Keyframes 可以用來創建動畫、陰影和使用顏色,幫助我們編寫更好的CSS。
官網:https://keyframes.app/
Design Resources 是一個設計資源的集合。
官網:https://www.designresourc.es/
Omatsuri 是一個開源項目,包含12個實用的前端工具。
官網:https://omatsuri.app/
UI Snippets 是一個前端動畫合集,可以通過右鍵點擊想要的動畫直接復制對應的 CSS 或 SCSS 代碼。
官網:https://ui-snippets.dev/
Pattern CSS 可以用漂亮的圖案填充空白背景。
官網:https://bansal.io/pattern-css
Can I use 可以用來查詢 HTML5、CSS、JS、SVG 在各種流行瀏覽器中的特性和兼容性。
官網:https://caniuse.com/
CSS Gradient 是一個用來快速方便的創建 CSS 漸變的網站。
官網:https://cssgradient.io/
CSS matic 是一個 CSS 工具,目前包含4個很有用的工具,分別是:支持各種顏色和透明度的漸變工具,使用漸變工具,可以創建漸變平滑的色彩變化效果和微妙的透明膠片;邊框圓角工具可以幫助你方便的實現需要的圓角效果;噪聲紋理可以幫助你創造奇妙的背景圖案,能夠實時預覽結果;盒陰影工具可以控制模糊半徑的變化,顏色變化,陰影大小,可以實現你想要的任何效果。
官網:https://www.cssmatic.com/
Am I Responsive 用來測試響應式網頁。輸入鏈接即可生成預覽,Am I Responsive 能幫我們測試出頁面在手機、平板電腦、筆記本電腦和桌面端設備上的瀏覽體驗。
官網:http://ami.responsivedesign.is/
這是一個實用的 CSS 生成器,可以實時查看調試效果。
官網:https://html-css-js.com/css/generator/
My Brand New Logo 是一個CSS 調色板生成器,用來創建一致的調色板方案。
官網:https://mybrandnewlogo.com/color-palette-generator
CSS cli-path 功能能夠構建復雜的形狀,該工具讓我們可以輕松地以交互方式構建該多邊形。
官網:https://bennettfeely.com/clippy/
CSS Grid Generator 是一個 Grid 布局生成器,通過這個工具可以快速創建自定義CSS Grid布局。
官網:https://cssgrid-generator.netlify.app/
CSS Layout Generator 布局生成器可以為布局組件創建 CSS 和 HTML 的工具。
官網:https://layout.bradwoods.io/
Fluid-responsive font-size calculator 即響應式字體計算器,可以輕松創建流暢的排版體驗。它有更廣泛的支持,可以用幾行 CSS 來實現。
官網:https://websemantics.uk/tools/responsive-font-calculator/
Regex101是學習、測試正則表達式的工具網站。
官網:https://regex101.com/
Regex-Vis 是一個正則表達式可視化器和編輯器。
官網:https://regex-vis.com/
Loupe 是一個可視化工具,可幫助我們了解 JavaScript 的調用堆棧/事件循環/回調隊列是如何執行的。
官網:http://latentflip.com/loupe/
RunJS 是一個桌面應用程序,可幫助我們編寫專門的 Javascript 和 Typescript 代碼。它的一些優勢是可以快速測試代碼,輕松導入和測試庫代碼,并且能夠修改界面、主題和字體以適應偏好。
官網:https://runjs.dev/
Wrap SVG Online 通過拖放從計算機上傳圖像,可以輕松地編輯網頁的 SVG 圖像。
官網:https://pavellaptev.github.io/warp-svg/
SVG Path Visualizer 可以幫助我們通過輸入 SVG 路徑數據來快速直觀地查看 SVG 圖像。此外,該工具還提供了詳細的說明,以便了解如何創建基本的 SVG 形狀,如直線、曲線、三角形等。
官網:https://svg-path-visualizer.netlify.app/
BGJar 是一個在線工具,可以輕松快速地為網站創建 SVG 背景。只需編輯必要的信息,它將自動導出圖像或代碼供我們應用到網站。
官網:https://bgjar.com/
Wavesnippets 可以將代碼分步設置為動畫、視頻或 GIF。
官網:https://www.wavesnippets.com/
Generate SVG Waves 可以用來創建 SVG 波形背景。
官網:https://svgwave.in/
CodeSandbox 是一個為 Web 應用程序開發而構建的在線編輯器,支持多種主流框架。
官網:https://codesandbox.io/
Openbase 幫助開發人員在數以百萬計的開源軟件包中進行選擇和使用。
官網:https://openbase.com/
CodePen 是一個在線的前端代碼編輯工具,可用于制作測試頁面、代碼調試,所見即所得。
官網:https://codepen.io/
JSONLint 是一個 JSON 調試工具,如果遺漏了語法中的某些內容,它會進行檢查。JSONLint 是處理大型 JSON 格式的絕佳工具,而且很容易上手。
官網:https://jsonlint.com/
Minifier 可以對 JavaScript 和 CSS 代碼進行壓縮,通過縮小可以提高網站加載速度。Minifier 通過刪除 .js 和 .css 文件中的空白并重新格式化它們以減小大小。
官網:https://www.minifier.org/
Unminify 和 Minifier 恰恰相反。使用 Unminify 可以使 .js 或 .css 文件可讀。這兩種工具都非常容易使用。
官網:https://unminify.com/
CRADIENT.ART 是一個高級 CSS 漸變編輯器,使用帶有分層、設計工具和免費云存儲的功能豐富的編輯器設計插圖、圖案、圖標等。
官網:https://gra.dient.art/
3DPop 可以使用 CSS 生成很棒的 3D 文本效果。
官網:https://textpop3d.web.app/
CSS Photo Filters 是一個CSS圖片濾鏡工具,提供了 36 個 CSS 過濾器供我們使用。
官網:https://baseline.is/tools/css-photo-filters/
在字符串查找處理程序中,正則表達式是一個不可忽略的處理方式。
我們能夠利用正則表達式輕松地做到檢索、替換那些符合某個模(規則)的字符串。
正則表達式有著很強的靈活性、邏輯性及功能性, 可以迅速地用極簡單的方式達到字符串的復雜控制。
但對于初學者來說,比較晦澀難懂;再者,正則表達式在實際開發過程中使用不會很頻繁。這樣的情況下,每次遇到編寫正則表達式處理問題時,就需要花費很多時間去調試驗證我們的正則匹配模式。
今天,我們來分享一個正則表達式在線調試工具-regex101 。
regex101 是一個在線生成,測試及調試正則表達式的工具。
regex101 支持測試多種語言(PCRE,Python2.7, ECMAScript(JavaScript),Java,Go等)的正則表達式解析,提供高亮匹配公式、正則解析步驟分析、匹配詳情等功能。
正則匹配測試
表達式編輯器中能夠提示對應正則表達式含義,提示測試字符串匹配到的正則表達式,并且可以選擇匹配模式修飾符。
多語言引擎支持
支持PCRE2,PCRE,ECMAScript(Javascript),Python2.7,Golang,Java8的正則表達式引擎解析。
正則表達式解析流程展示
字符串匹配詳情
快速語法參考
代碼生成工具
分享表達式鏈接
以上就是對regex101功能的基本使用說明, 通過以上對regex101的介紹,我們就可以使用regex101來調試我們的正則表達式了。
希望能給大家在學習工作中提供少許幫助,為大家在日常項目中提高使用正則表達式的效率。
參考:
https://regex101.com/
*請認真填寫需求信息,我們會在24小時內與您取得聯系。