iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 9
1
Modern Web

輕量高效.NET Core開源Blog引擎:Miniblog.Core系列 第 9

09.MetaWeblog改寫:節省伺服器資源,圖片上傳到Imgur圖床

【介紹】

今天讓我們實戰了解MetaWeblog並做修改。

MetaWeblog許多使用Blog的大大或許都會接觸到
它是Blog接口的標準,像是最經典的LiveWriter For Blogger
可以讓我們在電腦端編寫完文章,接著發布到雲端的Blog

【舉例】

Miniblog.Core.W3c測試網頁為範例
下載好Open Live Writer填寫網頁metablog連結、帳號、密碼
寫完我們要的文章內容,就由MetaWeblog協議系統幫忙上傳到雲端Blog
2018-10-09.23.20.02-image.png

已經很完善的功能了,為什麼還要介紹呢?
因為MetaWeblog只是一個接口要怎麼實作都是自己的自由

imgur修改邏輯

圖片佔伺服器資源很重要一部分,假如想要省錢又省容量
我們可以把圖片上傳到圖床,其中最有名的就是imgur

這時候可以改寫MetaWeblog的NewMediaObject方法
當Server接收到圖片,幫我們上傳到Imgur

【第一步】申請Imgur的clientId、clientSecret

替專案Nuget安裝Imgur.API
The Imgur API - General Information
2018-10-09.23.20.08-image.png

【第二步】實作上傳方法

原先保存圖片寫法:保存到Server本地:

public MediaObjectInfo NewMediaObject(string blogid, string username, string password, MediaObject mediaObject)  
{  
    //..略  
    string path = _blog.SaveFileAsync(bytes, mediaObject.name).GetAwaiter().GetResult(); /*保存圖片到Server本機*/ 
    //..略
}  

改寫只需要填入申請的clientId、clientSecret,就可以簡單使用Imgur API,接著替換掉原本的本機保存圖片的方法。

public MediaObjectInfo NewMediaObject(string blogid, string username, string password, MediaObject mediaObject)  
{  
    //..略 
    string path = UploadImgurImageByBytesAsync(bytes).GetAwaiter().GetResult();  
    //..略
}  

public async Task<string> UploadImgurImageByBytesAsync(byte[] bytes)  
{  
    var client = new ImgurClient("clientId", "clientSecret");  
    var endpoint = new ImageEndpoint(client);  
    return (await endpoint.UploadImageBinaryAsync(bytes)).Link;  
}  

【最後一步】上傳文章測試

登登登,看到圖片上傳到imgur圖床了~
2018-10-09.23.20.15-image.png

結論

MetaWeblog還有很多的接口,像是讀取文章、標籤等
在後面會介紹如何拿它配合asp.net core開源專案Electron.NET做一個電腦程式,方便管理網頁文章。


上一篇
08.ConfigureServices使用擴充方法添加功能
下一篇
10. ElectronNET : .NET Core+NodeJS做跨平台桌面程式
系列文
輕量高效.NET Core開源Blog引擎:Miniblog.Core30

尚未有邦友留言

立即登入留言