摘要:最近時間在做的項目中需要用到前端上傳服務器第一次做文件上傳的服務器端查了各種資料踩了各種坑記錄一下最終的實現方式一服務器端服務器端使用的是框架文件實現邏輯獲取用戶上傳的文件將文件保存到文件夾保存成功后將文件的索引存入數據庫獲取用戶上傳的文件
最近時間在做的項目中需要用到Android前端上傳服務器,第一次做文件上傳的服務器端,查了各種資料,踩了各種坑,記錄一下最終的實現方式
**一.服務器端**
服務器端使用的是ssh框架,文件實現邏輯:
1.獲取用戶上傳的文件
2.將文件保存到文件夾
3.保存成功后將文件的索引存入數據庫,
1.獲取用戶上傳的文件
完整action如下:
public class UploadAction extends ActionSupport implements ModelDriven, ServletResponseAware, ServletRequestAware { private HttpServletResponse response; private HttpServletRequest request; //*********重點****** // 多文件上傳的文件key,相當于獲取 request.getParameter(key) //如果傳入的key不對,上傳的文件為空,報空指針異常, private List file; private List fileFileName; private List fileContentType; private List dataUrl; public void setDataUrl(List dataUrl) { this.dataUrl = dataUrl; } public List getFile() { return file; } public void setFile(List file) { this.file = file; } public List getFileFileName() { return fileFileName; } public void setFileFileName(List fileFileName) { this.fileFileName = fileFileName; } public List getFileContentType() { return fileContentType; } public void setFileContentType(List fileContentType) { this.fileContentType = fileContentType; } private QualityBean bean = new QualityBean(); public void setBean(QualityBean bean) { this.bean = bean; } public String upload() throws Exception { dataUrl = new ArrayList (); String imgpath = "D:/loadtest"; System.out.println("file-size" + file.size()); if (file != null) { for (int i = 0; i < file.size(); ++i) { InputStream is = new FileInputStream(file.get(i)); dataUrl.add(imgpath + this.getFileFileName().get(i)); File destFile = new File(imgpath, this.getFileFileName().get(i)); OutputStream os = new FileOutputStream(destFile); byte[] buffer = new byte[400]; int length = 0; while ((length = is.read(buffer)) > 0) { os.write(buffer, 0, length); } is.close(); os.close(); //往數據庫添加--略 //返回數據,真實項目中返回自己邏輯判斷 BooleanBean bean = new BooleanBean(); bean.setUpdate(true); DataUtils.writeBeanDate(response, bean); } } return null; } @Override public void setServletRequest(HttpServletRequest httpServletRequest) { this.request = httpServletRequest; } @Override public void setServletResponse(HttpServletResponse httpServletResponse) { this.response = httpServletResponse; } @Override public QualityBean getModel() { return bean; } }
structs.xml配置如下
upload 104857600
如果報錯如下,則是上傳文件超過設置的大小,
**二.Android 端代碼實現**
final Listlist = new ArrayList<>(); list.add("/storage/emulated/0/Boohee/1565153408424.jpg"); list.add("/storage/emulated/0/Boohee/1564797245581.jpg"); submit.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Map params = new HashMap<>(); RequestBody pictureNameBody = RequestBody.create(MediaType.parse("multipart/form-data"), "file"); for (String str : list) { File picture = new File(str); RequestBody requestFile = RequestBody.create(MediaType.parse("multipart/form-data"), picture); params.put("file"; filename="" + picture.getName() + "", requestFile); } mvpPresenter.submit("韶關1店",pictureNameBody, params); } });
上面file作為文件上傳的key,兩端必須保持一致
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.hztianpu.com/yun/75987.html
摘要:發布應用市場的平臺搶紅包工具紅包精靈開源啦掘金紅包精靈,如果喜歡,點個開源不易。作者將原素材文章進行了新內容的添加和重新排列,但是因為文章高效的代碼編寫技巧總結前端掘金本文總結了代碼編寫技巧,來提升你的和代碼。 收藏安卓開發中非常實用優秀的庫! 有圖有真相! - Android - 掘金本來是打算收藏工具類的,但轉念一想,已經有這么多優秀的庫了,就沒必要再去重復造輪子了,便歸納工作中比...
摘要:后續過了幾天,公司購置了幾臺全新的測試機,測試同學將系統在一臺三星的機子上一測,又發現新問題了選擇完圖片進行本地預覽時,發現圖片翻轉了但上傳后再展示又是正常的。 最近在處理移動端選擇圖片實時預覽并上傳時遇到一個問題:上傳前圖片預覽正常,但上傳到服務器上的圖片展示到頁面上時,有時會出現圖片翻轉的問題,一般是翻轉 90 度。后經一翻研究找到了問題所在,特在此記錄一下。 問題描述 接上面提到...
閱讀 1657·2021-11-23 09:51
閱讀 1899·2021-11-16 11:45
閱讀 5214·2021-10-09 09:43
閱讀 3029·2021-07-22 16:47
閱讀 1184·2019-08-27 10:55
閱讀 3688·2019-08-26 17:40
閱讀 3583·2019-08-26 11:39
閱讀 3532·2019-08-23 18:39