在bass下新建qb文件夹,在qb下新建waimai服务,和attachment服务,和SimpleFileStore.java类

waimai服务如图建6个action,其中saveBook_order要关联两张表,book_order、user

attachment服务

SimpleFileStore.java

package qb;import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URLEncoder;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.apache.commons.io.FileUtils;
import org.apache.commons.io.IOUtils;import com.alibaba.fastjson.JSONObject;
import com.justep.baas.action.ActionContext;public class SimpleFileStore {public static JSONObject service(JSONObject params, ActionContext context) throws ServletException, IOException {HttpServletRequest request = (HttpServletRequest)context.get(ActionContext.REQUEST);HttpServletResponse response = (HttpServletResponse)context.get(ActionContext.RESPONSE);if(request.getMethod().equals("GET")){doGet(request, response);}else if(request.getMethod().equals("POST")){doPost(request, response);}return null;}static String docStorePath;static File docStoreDir;static{String baasPath = Thread.currentThread().getContextClassLoader().getResource("").getPath() + ".." + File.separator + "..";docStorePath = baasPath +File.separator + "model"+File.separator + "UI2"+File.separator + "bookapp"+ File.separator + "data" + File.separator + "attachmentSimple";File file = new File(docStorePath);//兼容以前存储目录if(file.exists() && file.isDirectory()){docStoreDir = file;}}public static File getDocStoreDir(HttpServletRequest request) {String justepHome = System.getenv("JUSTEP_HOME");if(justepHome != null && docStoreDir == null ){docStorePath =  justepHome + "/model/UI2/bookapp/data/attachmentSimple/";File file = new File(docStorePath);if(!file.exists()){file.mkdirs();}docStoreDir = file;}else if(docStoreDir == null){ServletContext context = request.getSession().getServletContext();String path = context.getRealPath("/");docStorePath =  path + "../../model/UI2/bookapp/data/attachmentSimple/";File file = new File(docStorePath);if(!file.exists()){file.mkdirs();}docStoreDir = file;}return docStoreDir;}/**get为获取文件 浏览或者下载**/private static void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {getDocStoreDir(request);String operateType = request.getParameter("operateType");if("copy".equals(operateType)){copyFile(request,response);}else{getFile(request,response);}}private static void copyFile(HttpServletRequest request,HttpServletResponse response) throws IOException {String ownerID = request.getParameter("ownerID");String targetOwnerID = request.getParameter("targetOwnerID");String storeFileName = request.getParameter("storeFileName");File file = new File(docStorePath + File.separator +ownerID + File.separator + storeFileName);File targetFile = new File(docStorePath + File.separator + targetOwnerID + File.separator + storeFileName);FileUtils.copyFile(file, targetFile);}private static final int BUFFER_SIZE = 32768 * 8;private static void getFile(HttpServletRequest request,HttpServletResponse response) throws IOException {String ownerID = request.getParameter("ownerID");String realFileName = URLEncoder.encode(request.getParameter("realFileName"),"utf-8");String storeFileName = request.getParameter("storeFileName");String operateType = request.getParameter("operateType");/*String fileSize = request.getParameter("fileSize");*/File file = new File(docStorePath + File.separator +ownerID + File.separator + storeFileName);FileInputStream fis = new FileInputStream(file);/*response.setContentType(mimeType);*//*response.setHeader("Content-Length", String.valueOf(part.getSize()));*/response.setHeader("Cache-Control", "pre-check=0, post-check=0, max-age=0");String fileNameKey = "filename";/*UserAgent ua = com.justep.ui.util.NetUtils.getUserAgent(request);if(Browser.FIREFOX.equals(ua.getBrowser().getGroup())){fileNameKey = "filename*";}*/if("download".equals(operateType)){response.addHeader("Content-Disposition", "attachment; "+fileNameKey+"=\"" + realFileName + "\"");}else{response.addHeader("Content-Disposition", "inline; "+fileNameKey+"=\"" + realFileName + "\"");}OutputStream os = response.getOutputStream();byte[] buffer = new byte[BUFFER_SIZE];try {int read;while ((read = fis.read(buffer)) != -1) {os.write(buffer, 0, read);}} finally {fis.close();}}/**post为上传**/protected static  void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {getDocStoreDir(request);String contentType = request.getContentType();try {if("application/octet-stream".equals(contentType)){storeOctStreamFile(request,response);}else if(contentType !=null && contentType.startsWith("multipart/")){storeFile(request,response);}else{throw new RuntimeException("not supported contentType");}} catch (Exception e) {e.printStackTrace();throw new IOException("storeFile异常");}response.getWriter().write("");}private static void storeOctStreamFile(HttpServletRequest request,HttpServletResponse response) throws IOException {InputStream in = null;FileOutputStream storeStream = null;try{String ownerID = request.getParameter("ownerID");String storeFileName = request.getParameter("storeFileName");in = request.getInputStream();String storePath = docStorePath + File.separator + ownerID;getOrCreateFile(storePath);File toStoreFile = new File(storePath + File.separator + storeFileName);storeStream = new FileOutputStream(toStoreFile);IOUtils.copy(in, storeStream);}finally{IOUtils.closeQuietly(in);IOUtils.closeQuietly(storeStream);}}private static File getOrCreateFile(String path) {File storeDir = new File(path);if(!(storeDir.exists() && storeDir.isDirectory())){storeDir.mkdirs();}return storeDir;}public static List<FileItem> parseMultipartRequest(HttpServletRequest request) throws FileUploadException{DiskFileItemFactory factory = new DiskFileItemFactory();ServletContext servletContext = request.getSession().getServletContext();File repository = (File) servletContext.getAttribute("javax.servlet.context.tempdir");factory.setRepository(repository);// Create a new file upload handlerServletFileUpload upload = new ServletFileUpload(factory);// Parse the request@SuppressWarnings("unchecked")List<FileItem> items = upload.parseRequest(request);return items;}private static void storeFile(HttpServletRequest request,HttpServletResponse response) throws Exception {HashMap<String,String> params = new HashMap<String,String>();List<FileItem> items =  parseMultipartRequest(request);Iterator<FileItem> iter = items.iterator();FileItem fileItem = null;while (iter.hasNext()) {FileItem item = iter.next();if (item.isFormField()) {String name = item.getFieldName();String value = item.getString();params.put(name, value);} else {/*String fieldName = item.getFieldName();String fileName = item.getName();String contentType = item.getContentType();boolean isInMemory = item.isInMemory();long sizeInBytes = item.getSize();*/fileItem = item;}}if(fileItem != null){String storePath = docStorePath + File.separator + params.get("ownerID");File storeDir = new File(storePath);if(!(storeDir.exists() && storeDir.isDirectory())){storeDir.mkdirs();}File toStoreFile = new File(storePath + File.separator + params.get("storeFileName"));fileItem.write(toStoreFile);}}
}

转载于:https://www.cnblogs.com/xiaoxiaohabi/p/6789238.html

3、构建bass服务及model相关推荐

  1. maven jersey mysql_jersey+maven构建restful服务

    一.新建一个Maven Web项目 a) 新建一个简单的Maven项目 b) 将简单的Maven项目转成Web项目 (若没出现further configuration available--或里面的 ...

  2. (转)构建微服务:Spring boot 入门篇

    转自: Spring Boot(一):入门篇 - 纯洁的微笑 - 博客园 : 什么是Spring Boot Spring Boot 是由 Pivotal 团队提供的全新框架,其设计目的是用来简化新 S ...

  3. protobuf协议_gRPC 使用 protobuf 构建微服务

    gRPC 使用 protobuf 构建微服务 发表于 2018-05-02 | 阅读次数: 2997 | 字数统计: 1,805 gRPC 使用 protobuf 通信构建微服务 本文目录: 微服务架 ...

  4. Spring微服务实战第2章 使用Spring Boot构建微服务

    第2章 使用Spring Boot构建微服务 基于微服务的架构具有以下特点. 有约束的--微服务具有范围有限的单一职责集.微服务遵循UNIX的理念,即应用程序是服务的集合,每个服务只做一件事,并只做好 ...

  5. 使用Spring Boot构建微服务(文末福利)

    本文主要内容 学习微服务的关键特征 了解微服务是如何适应云架构的 将业务领域分解成一组微服务 使用Spring Boot实现简单的微服务 掌握基于微服务架构构建应用程序的视角 学习什么时候不应该使用微 ...

  6. MySQL到Elasticsearch实时同步构建数据检索服务的选型与思考

    前言 本文具体探讨 MySQL 数据实时同步到 Elasticsearch (以下简称 ES ) 技术方案和思考,同时使用一定篇幅介绍一些前置知识,从理论到实践,让读者更好的理解这块内容和相关问题.包 ...

  7. php构建soap_使用PHP构建Web服务

    php构建soap 在你开始前 关于本教程 本教程适用于希望通过在PHP中创建Web服务来跳入Web服务潮流PHP程序员. 您将通过使用PHP构建SOAP服务器来构建Web服务. 您将创建的Web服务 ...

  8. 构建微服务时的三大常见错误

      来自:分布式实验室 公众号,作者:解博 想在网上挨骂,最简单的方法就是写点关于微服务架构的东西.每个人对微服务都有自己的一套见解:无论我们是赞扬还是批评,总会有人跳出来强调"你错了&qu ...

  9. 【高并发】高并发环境下构建缓存服务需要注意哪些问题?我和阿里P9聊了很久!...

    写在前面 周末,跟阿里的一个朋友(去年晋升为P9了)聊了很久,聊的内容几乎全是技术,当然了,两个技术男聊得最多的话题当然就是技术了.从基础到架构,从算法到AI,无所不谈.中间又穿插着不少天马行空的想象 ...

最新文章

  1. r语言聚类分析_技术贴 | R语言pheatmap聚类分析和热图
  2. 【转】一步一步学Linq to sql(五):存储过程
  3. oracle ora-12546,window10上登录Oracle时提示ORA-12546:Permission denied
  4. python numpy库安装 mac_教程|如何在mac上为Python安装XGBoost!
  5. pgsql_sql查询效率优化
  6. 云原生的基石,一文读懂容器、Docker、Pod到底是什么!
  7. Java企业介绍,Hunson 介绍
  8. python批量提取word指定内容_python 批量提取word应聘登记表数据+情感分析
  9. Java类的声明详解
  10. PureMVC框架知识介绍
  11. PS制作logo图片
  12. Spring @Value(#{})和@Value(${})
  13. android系统 vender添加自定义的预编译的应用程序
  14. 【二维码】新浪开放平台和腾讯开放平台试水
  15. vue项目中swiper动态更新后无法轮播问题 附带案例代码
  16. 线性代数可以做些什么?(之一)
  17. 前端ajax实现分页思路详解
  18. 速知!二级建造师你满足报考要求吗?
  19. 2020 Ohayoo游戏开发者沙龙成都站将于10月22日正式启动
  20. cad app android,迷你CAD免费手机版

热门文章

  1. java常用弹出式对话框
  2. Excel为整列设置函数
  3. WLAN与WIFI的区别
  4. Spring 是解析配置类过程详解
  5. 老板:kill -9的原理都不知道就敢到线上执行,明天不用来了!
  6. 对 Session 的深入探讨
  7. Redis持久化:AOF和RDB
  8. 33.向vector里面添加数字,换行敲下输入结束
  9. 【Python】青少年蓝桥杯_每日一题_7.27_邮箱密码
  10. 50兆 svg 文件超过_用svg+css3实现支付宝App波浪功能