.net mvc 使用盛派Senparc.Weixin 上傳圖片介面

来源:http://www.cnblogs.com/XM-CHC/archive/2017/02/20/6419329.html
-Advertisement-
Play Games

首先獲取微信簽名,Controller代碼: public ActionResult MutualHelpAdd() { var jssdkUiPackage = JSSDKHelper.GetJsSdkUiPackage(WeChatParameter._appID, WeChatParamete ...


首先獲取微信簽名,Controller代碼:

public ActionResult MutualHelpAdd()
        {
            var jssdkUiPackage = JSSDKHelper.GetJsSdkUiPackage(WeChatParameter._appID, WeChatParameter._appSecret, Request.Url.AbsoluteUri);
            ViewBag.AppId = WeChatParameter._appID;
            ViewBag.Timestamp = jssdkUiPackage.Timestamp;
            ViewBag.NonceStr = jssdkUiPackage.NonceStr;
            ViewBag.Signature = jssdkUiPackage.Signature;

            return View();
        }
View Code

視圖代碼:

  wx.config({
            //debug: true,
            appId: '@ViewBag.AppId',
            timestamp: '@ViewBag.Timestamp',
            nonceStr: '@ViewBag.NonceStr',
            signature: '@ViewBag.Signature',
            jsApiList: [
               'chooseImage',
               'previewImage',
               'uploadImage',
               'downloadImage'
            ]
        });

        wx.ready(function () {

            // 5 圖片介面
            // 5.1 拍照、本地選圖
            var images = {
                localId: [],
                serverId: []
            };
            document.querySelector('#btnAddImage').onclick = function () {
                wx.chooseImage({
                    count: 3, // 預設9,設置可以同時上傳的圖片數量
                    sizeType: ['original', 'compressed'],     // 可以指定是原圖還是壓縮圖,預設二者都有
                    sourceType: ['album', 'camera'],         // 可以指定來源是相冊還是相機,預設二者都有
                    success: function (res) {
                        images.localId = res.localIds;
                        //alert('已選擇 ' + res.localIds.length + ' 張圖片');

                        var i = 0, length = images.localId.length;
                        images.serverId = [];
                        function upload() {
                            wx.uploadImage({
                                localId: images.localId[i],
                                success: function (res) {
                                    i++;
                                    //alert('已上傳:' + i + '/' + length);
                                    images.serverId.push(res.serverId);

                                    //TODO: res.serverId 就是 media_id,根據它去微信伺服器讀取圖片數據:自定義上傳到自己伺服器
                                    var imageJson = $("#hdImageJson").val();

                                    $.ajax({
                                        type: 'post',
                                        url: '/Common/AddImage',
                                        async: false,
                                        data: {
                                            media_id: res.serverId,
                                            imageJson: imageJson,
                                            folderName:"MutualHelp"
                                        },
                                        success: function (data) {
                                            if (data.ImageUrl != '') {
                                                // 返回 圖片在我們自己的伺服器的url
                                                var img = "<img class='task_image' src='/images/" + data.ImageUrl + "'/>";
                                                $("#imgList").append(img);
                                                $("#hdImageJson").val(data.ImageJson);
                                            }
                                        },
                                        error: function (err) {

                                        }
                                    })

                                    if (i < length) {
                                        upload();
                                    }
                                },
                                fail: function (res) {
                                    alert(JSON.stringify(res));
                                }
                            });
                        }
                        upload();

                    }
                });
            };

        });
View Code

圖片保存到本地伺服器方法:

  /// <summary>
        /// 公用 微信 上傳圖片方法
        /// </summary>
        /// <param name="media_id"></param>
        /// <param name="imageJson"></param>
        /// <returns></returns>
        public JsonResult AddImage(string media_id, string imageJson,string folderName)
        {
            var imgUrl = "";
            try
            {
                List<ImageList> curImageResult;
                if (!string.IsNullOrEmpty(imageJson))
                {
                    curImageResult = JsonConvert.DeserializeObject<List<ImageList>>(imageJson);
                }
                else
                {
                    curImageResult = new List<ImageList>();
                }
                var accessToken = AccessTokenContainer.TryGetAccessToken(WeChatParameter._appID, WeChatParameter._appSecret);

                System.IO.MemoryStream stream = new System.IO.MemoryStream();
                MediaApi.Get(accessToken, media_id, stream);
                Image img = Image.FromStream(stream);
                var imgName = DateTime.Now.ToString("yyyyMMddhhss");
                var fileSaveUrl =string.Format(FilePath + "/{0}/" + imgName + ".jpg", folderName);
                imgUrl = string.Format("/{0}/" + imgName + ".jpg", folderName);
                img.Save(fileSaveUrl);

                var imageEntity = new ImageList
                {
                    ImageKey = imgName,
                    ImageUrl = imgUrl,
                    UploadTime = DateTime.Now
                };
                curImageResult.Add(imageEntity);

                imageJson = JsonConvert.SerializeObject(curImageResult);
            }
            catch (Exception ex)
            {
                imgUrl = "";
            }

            var result = new
            {
                ImageJson = imageJson,
                ImageUrl = imgUrl
            };
            return Json(result);
        }
View Code

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 一.認識Redis1. Redis 是一個高性能的key-value資料庫。 2. 它支持存儲的value類型相對更多,包括string(字元串)、list(鏈表)、set(集合)、zset(sorted set --有序集合)和hash(哈希類型)。 3.周期性的把更新的數據寫入磁碟或者把修改操作 ...
  • 寒假在家無聊,找了一本還不錯的電子書來學習, 一是複習了以前最初學的一些基本類, 二是學一些那時候老師沒有教的東西, 看的書是pdf的所以下麵全部都是手打出來的,有什麼錯誤在所難免。 其實一個寒假只看了這麼一點還是很懶惰的。 放上來以後自己好查。以後空閑了還可以看看。 快捷鍵 Ctrl + Ente ...
  • 目前在用ASP.NET的 WebAPI2來做後臺介面開發,在與前臺做測試的時候,總是需要發送一個demo給他,但是這樣很麻煩的,他還有可能記不住。 然後就想到SwaggerUI 生成測試文檔。 話不多說,來看看它的具體用法吧! 第一步: 在VS2015(後者是你自己的工具里)打開程式包管理控制台輸入 ...
  • 1,關於欄位不匹配時候想要具體看哪個欄位DbEntityValidationException 類。 2,一般我們傳特殊符號時候自動編碼轉移System.Web.HttpUtility.UrlDecode(model.selgrade)。 ...
  • 1、鏈接例子: string url = "http://domainName:port/1/2/3/4.htm?sysCode=1001020&token=QXJzemR3YXlWdm9YMFhneFU0c2tqSXp6YmJqMVNQSUVlWndEbm9yellBNHp5SXBmK2gxVGx ...
  • 新建的mvc4 項目,然後從其他項目里拷貝shared文件夾和_ViewStart.cshtml文件過去,然後在@符號上出現“沒有為擴展名“.cshtml”註冊的生成提供程式” ...
  • 這是在Rudy Huyn的blog上看到的, "Status" 是在win10上才出現的屬性, 用來區分系統還是挺有效的。 ...
  • 目錄 1. 字元串 1.1. 字元串中的轉義序列 1.2. 字元串的不可變性 1.3. 字元串索引 1.4. 字元串分割:split 1.5. 數組連接成字元串:join 2. 數組 2.1. 數組索引 2.2. 多維數組 2.3. 數組方法 2.3.1. 數據追加到數組的尾部push() 函數 2 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...