1. 程式人生 > >微信小程式填坑之路(三)--上傳頭像

微信小程式填坑之路(三)--上傳頭像

public class FileUploadServlet extends HttpServlet { private static final long serialVersionUID = 1L; private static Logger logger = LoggerFactory.getLogger(FileUploadServlet.class); public FileUploadServlet() { super(); } protected void doGet(HttpServletRequest request, HttpServletResponse response
) throws ServletException, IOException
{ JsonMessage<Object> message = new JsonMessage<Object>(); EOSResponse eosResponse = null; String sessionToken = null; FileItem file = null; InputStream in = null; ByteArrayOutputStream swapStream1 = null
; try { request.setCharacterEncoding("UTF-8"); //1、建立一個DiskFileItemFactory工廠 DiskFileItemFactory factory = new DiskFileItemFactory(); //2、建立一個檔案上傳解析器 ServletFileUpload upload = new ServletFileUpload(factory); //解決上傳檔名的中文亂碼
upload.setHeaderEncoding("UTF-8"); // 1. 得到 FileItem 的集合 items List<FileItem> items = upload.parseRequest(request); logger.info("items:{}", items.size()); // 2. 遍歷 items: for (FileItem item : items) { String name = item.getFieldName(); logger.info("fieldName:{}", name); // 若是一個一般的表單域, 列印資訊 if (item.isFormField()) { String value = item.getString("utf-8"); if("session_token".equals(name)){ sessionToken = value; } }else { if("file".equals(name)){ file = item; } } } //session校驗 if(StringUtils.isEmpty(sessionToken)){ message.setStatus(StatusCodeConstant.SESSION_TOKEN_TIME_OUT); message.setErrorMsg(StatusCodeConstant.SESSION_TOKEN_TIME_OUT_MSG); } String userId = RedisUtils.hget(sessionToken,"userId"); logger.info("userId:{}", userId); if(StringUtils.isEmpty(userId)){ message.setStatus(StatusCodeConstant.SESSION_TOKEN_TIME_OUT); message.setErrorMsg(StatusCodeConstant.SESSION_TOKEN_TIME_OUT_MSG); } //上傳檔案 if(file == null){ }else{ swapStream1 = new ByteArrayOutputStream(); in = file.getInputStream(); byte[] buff = new byte[1024]; int rc = 0; while ((rc = in.read(buff)) > 0) { swapStream1.write(buff, 0, rc); } Usr usr = new Usr(); usr.setObjectId(Integer.parseInt(userId)); final byte[] bytes = swapStream1.toByteArray(); eosResponse= ServerProxy.getSharedInstance().saveHeadPortrait(usr, new RequestOperation() { @Override public void addValueToRequest(EOSRequest request) { request.addMedia("head_icon_media", new EOSMediaData(EOSMediaData.MEDIA_TYPE_IMAGE_JPEG, bytes)); } }); // 請求成功的場合 if (eosResponse.getCode() == 0) { message.setStatus(ConstantUnit.SUCCESS); } else { message.setStatus(String.valueOf(eosResponse.getCode())); } } } catch (Exception e) { e.printStackTrace(); } finally{ try { if(swapStream1 != null){ swapStream1.close(); } } catch (IOException e) { e.printStackTrace(); } try { if(in != null){ in.close(); } } catch (IOException e) { e.printStackTrace(); } } PrintWriter out = response.getWriter(); out.write(JSONObject.toJSONString(message)); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } }

相關推薦

程式()--頭像

public class FileUploadServlet extends HttpServlet { private static final long serialVersionUID = 1L; private static Logger logger = LoggerFactory

程式):佈局適配方案(rpx、px、vw、vh)

因為小程式是以微信為平臺執行的,可以同時執行在android與ios的裝置上,所以不可避免的會遇到佈局適配問題,特別是在iphone5上,因為螢幕尺寸小的緣故,也是適配問題最多的機型,下面就簡單介紹幾種適配方法。 rpx適配 rpx是小程式中

一名Android開發者的程式(2)

前言 上一篇是九月二十七日寫的,而這一篇我動筆的時間是十月十日(特殊的日子),中間相隔十三天——當然是因為國慶節。說老實話,這十三天裡面我都沒有碰和小程式有關的東西——畢竟學習小程式的開發也只是起於興趣,而平時的工作並不會涉及與其相關的東西——但是在這十三天裡

程式(一):text空格符號以及省略號

1、text的空格符 首先需要設定<text> 控制元件的decode值 decode可以解析的有&nbsp; &lt; &gt; &amp; &

程式(四)--2016.12.21 更新

今天又一次更新,繼續填坑了。。 更新概述 新增分享、模板訊息、客服訊息、掃一掃、帶引數二維碼(當前僅限開發者和體驗者使用)等功能新增 4 個新 API, 2個新元件拓展了 10 個元件屬性,新增 6 個元件事件修復數十個 API 以及元件 bug,優化部分互動體驗開發者工

程式(四):登入獲取openid、unionid

在微信小程式中,因為各種各樣的原因我們會需要獲取到使用者的openid或者unionid下面就簡單來講一下在小程式中如何獲取openid和unionid。 步驟一:微信登入獲取登入憑證

程式springmvc與程式的資料互動(json)

springmvc框架寫到現在終於牽扯到小程式了(所以別說我“不務正業”),對於一個應用程式來說,它的本質其實就是無數個對資料進行增刪改查的操作,這裡起到至關重要的就是資料,於是這篇帖子的目的就是實現小程式與後臺資料的互動。小程式使用的是wx.request的api來提交和接

程式(二):cover-view

在一些情況下,我們需要對map、video、canvas、camera這些微信小程式的原生控制元件,進行自定義,比如在camera上新增一個矩形線框作為拍照區域,這時我們就需要使用到cover-view

一名Android開發者的程式(1)

前言 首先要宣告的是,我是一名 Android 開發者,之前基本沒有前端開發經驗,甚至連 JS ,HTML 都是為了開發小程式現學的一些皮毛——所以文章中所提到的一些點也許在資深前端開發者看來只是小case,但是站在一個 Android 開發者的角度來看確實是

程式:專案開發簡介

前言 最近因為公司要求進行微信小程式開發,這裡記錄一下這一個多月下來的開發心得。首先,我得說明一下,我並不是一名前端,以前一直是從事Android開發,對html、css、js等也就是了解,可以

遊戲(一)

1、註冊微信小程式賬號 http://mp.weixin.qq.com 2、下載開發工具 3、新建專案,選擇小程式 4、選好目錄、填寫專案名稱、可選是否建立demo或是空專案啟動 5、若不選擇“建立普通快速啟動模板”會提示如下 在目錄下新建game.jsongame.

程式--01 元件層級過高

問題描述 我在開發小程式的過程中,遇到video,textarea等元件層級過高,其他元素無法遮蓋這些元件,讓人抓狂。 案例1 textarea元件元素過高,當有toast彈出時,文字浮於上方,效果如圖所示: 我們看到textarea元件文字

程式——文字超出部分隱藏(已解決)

一直使用之前的版本沒有問題,今天在首頁顯示“定位”的地方不能生效,先上程式碼我再說原因 /*文字超出省略*/ { text-overflow: ellipsis; white-space: normal; overflow: hidden; display: -web

程式—input密碼可見與不可見(已解決)

2018年11月5日下午16:45修改: 經過在手機上多次真機測試,發現這個方法有問題,在電腦上沒什麼毛病。但在手機上,會出現點選眼睛的小圖示不能夠及時顯示或者隱藏密碼,特此對程式碼進行簡化和修改。 <!--修改wxml--> <image class='showIm

程式--自定義模態彈窗(已解決)

信我,這次只講技術! 實現效果(點選“更換手機號”,背景變暗,彈出輸入框): 嗯,我懶,就用了上一篇文章小程式填坑之路--彈窗修改手機號後的更新(已解決)的圖。 先上wxml的程式碼, <view class="weui-vcode-btn" bindtap="

程式--彈窗修改手機號後的更新(已解決)

在寫之前,我不得不說這是一個小的不能再小的點了,簡直不能是坑,僅是我個人的學藝不精。 先上效果圖(將2輸入框的手機號替換掉1輸入框的手機號): (都是在js檔案裡進行操作) 首先在data裡 ,定義cellPhone=" " data{ cellPhone: ''

程式 記錄

本文由本人簡書搬遷至此,並做小幅修改。 老闆要讓做個小程式,並且很著急。於是邊學邊幹開始做微信小程式。 過程中遇到不少坑,前期時間太緊沒有記錄,後期憑記憶簡單記一下,防止再次入坑。 1.開發工具中,本地資原始檔名(資料夾路徑未測)對大小寫不敏感,拼錯仍然能正確顯示,但在真機上敏感,拼錯不

程式的摸索--從demo入手揭開神祕面紗

微信小程式推出已久,除了普通開發版本,如今已經支援雲開發版本。框架上的選擇也有很多,比較火的應該屬 mpvue 和 wepy 吧。但是我還是選擇先從普通開發版本和原生語言開始入手微信小程式,然後再考慮框架的事情。 專案結構 剛接觸小程式的我,一看到也是有點懵逼

程式支付提示商戶未開通支付許可權

繼上次踩坑事件後 我們現在API祕藥都是採用數字+小寫字母 後面不多久公司就成為了微信服務商 工作起來 效率提高不少 然鵝我今天又踩了一個坑 給客戶開通了微信支付客戶不給賬號給我登入 拿不到裡面的一些資料 和APPID授權啥的 都是指導客戶開通 這些弄完之後 測試小程式支付

程式篇(一)

在微信小程式淺析中講到微信小程式原理以及怎麼新建一個hello world 工程,還挖了坑。現在把坑填上,捋一捋小程式的程式碼結構。看一下截圖: 全域性檔案 看一下目錄結構: 前面也說到,全域性檔案有且只有三個app.js、app.json、app