浏览代码

新增百度图床功能

懒得勤快 7 年之前
父节点
当前提交
4ae2c80a02

+ 1 - 1
Masuit.Tools.Core/Masuit.Tools.Core.csproj

@@ -2,7 +2,7 @@
 
   <PropertyGroup>
     <TargetFramework>netcoreapp2.0</TargetFramework>
-    <Version>1.9.9</Version>
+    <Version>1.9.10</Version>
     <Authors>懒得勤快</Authors>
     <Company>masuit.com</Company>
     <Description>包含一些常用的操作类,大都是静态类,加密解密,反射操作,硬件信息,字符串扩展方法,日期时间扩展操作,大文件拷贝,图像裁剪,html处理,验证码、NoSql等常用封装。

+ 53 - 0
Masuit.Tools.Core/Net/WebExtension.cs

@@ -1,11 +1,14 @@
 using System;
 using System.Collections.Generic;
+using System.IO;
 using System.Linq;
 using System.Net.Http;
+using System.Net.Http.Headers;
 using System.Threading.Tasks;
 using Masuit.Tools.Core.Config;
 using Masuit.Tools.Models;
 using Newtonsoft.Json;
+using Newtonsoft.Json.Linq;
 
 namespace Masuit.Tools.Core.Net
 {
@@ -207,5 +210,55 @@ namespace Masuit.Tools.Core.Net
         }
 
         #endregion
+
+        /// <summary>
+        /// 上传图片到百度图床
+        /// </summary>
+        /// <param name="stream"></param>
+        /// <returns></returns>
+        public static async Task<string> UploadImageAsync(Stream stream)
+        {
+            using (HttpClient httpClient = new HttpClient()
+            {
+                BaseAddress = new Uri("https://sp1.baidu.com"),
+            })
+            {
+                httpClient.DefaultRequestHeaders.UserAgent.Add(ProductInfoHeaderValue.Parse("Mozilla/5.0"));
+                using (var bc = new StreamContent(stream))
+                {
+                    bc.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment")
+                    {
+                        FileName = "1.jpg",
+                        Name = "image"
+                    };
+                    bc.Headers.ContentType = MediaTypeHeaderValue.Parse("image/jpeg");
+                    using (var content = new MultipartFormDataContent { bc })
+                    {
+                        return await await httpClient.PostAsync("/70cHazva2gU2pMbgoY3K/n/image?needJson=true", content).ContinueWith(async t =>
+                        {
+                            if (t.IsCanceled || t.IsFaulted)
+                            {
+                                Console.WriteLine("发送请求出错了" + t.Exception);
+                                return string.Empty;
+                            }
+                            var res = await t;
+                            if (res.IsSuccessStatusCode)
+                            {
+                                string s = await res.Content.ReadAsStringAsync();
+                                var token = JObject.Parse(s);
+                                if ((int)token["errno"] == 0)
+                                {
+                                    s = (string)token["data"]["imageUrl"];
+                                    return s;
+                                }
+                                s = (string)token["errmsg"];
+                                return s;
+                            }
+                            return string.Empty;
+                        });
+                    }
+                }
+            }
+        }
     }
 }

+ 53 - 0
Masuit.Tools/Media/ImageUtilities.cs

@@ -4,7 +4,10 @@ using System.Drawing.Drawing2D;
 using System.Drawing.Imaging;
 using System.IO;
 using System.Linq;
+using System.Net.Http;
+using System.Net.Http.Headers;
 using System.Threading.Tasks;
+using Newtonsoft.Json.Linq;
 
 namespace Masuit.Tools.Media
 {
@@ -1050,5 +1053,55 @@ namespace Masuit.Tools.Media
             }
             return bmp2;
         }
+
+        /// <summary>
+        /// 上传图片到百度图床
+        /// </summary>
+        /// <param name="stream"></param>
+        /// <returns></returns>
+        public static async Task<string> UploadImageAsync(Stream stream)
+        {
+            using (HttpClient httpClient = new HttpClient()
+            {
+                BaseAddress = new Uri("https://sp1.baidu.com"),
+            })
+            {
+                httpClient.DefaultRequestHeaders.UserAgent.Add(ProductInfoHeaderValue.Parse("Mozilla/5.0"));
+                using (var bc = new StreamContent(stream))
+                {
+                    bc.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment")
+                    {
+                        FileName = "1.jpg",
+                        Name = "image"
+                    };
+                    bc.Headers.ContentType = MediaTypeHeaderValue.Parse("image/jpeg");
+                    using (var content = new MultipartFormDataContent { bc })
+                    {
+                        return await await httpClient.PostAsync("/70cHazva2gU2pMbgoY3K/n/image?needJson=true", content).ContinueWith(async t =>
+                        {
+                            if (t.IsCanceled || t.IsFaulted)
+                            {
+                                Console.WriteLine("发送请求出错了" + t.Exception);
+                                return string.Empty;
+                            }
+                            var res = await t;
+                            if (res.IsSuccessStatusCode)
+                            {
+                                string s = await res.Content.ReadAsStringAsync();
+                                var token = JObject.Parse(s);
+                                if ((int)token["errno"] == 0)
+                                {
+                                    s = (string)token["data"]["imageUrl"];
+                                    return s;
+                                }
+                                s = (string)token["errmsg"];
+                                return s;
+                            }
+                            return string.Empty;
+                        });
+                    }
+                }
+            }
+        }
     } //end class
 }

+ 2 - 2
Masuit.Tools/Properties/AssemblyInfo.cs

@@ -36,7 +36,7 @@ using System.Runtime.InteropServices;
 // 方法是按如下所示使用“*”: :
 // [assembly: AssemblyVersion("1.0.*")]
 
-[assembly: AssemblyVersion("1.9.9.0")]
-[assembly: AssemblyFileVersion("1.9.9.0")]
+[assembly: AssemblyVersion("1.9.10.0")]
+[assembly: AssemblyFileVersion("1.9.10.0")]
 [assembly: NeutralResourcesLanguage("zh-CN")]