团队开发冲刺日(五)

  今日学习Android上传图文至后台,Servlet部分的内容。但功能未能完全实现。在此作个思路总结。 

  实现思路是Android传数据到servlet,servlet整理数据后入库。由于记录的是笔记,属于长文本,因此我是想使用text类型进行存储。随后是对图片的处理。通过查阅我得知图片存储有两种方式,一种是转化成二进制进行存储,但这种存储在每次读取时都要解析一遍,很麻烦,另一种是路径存储。因此这里涉及到流文件转换:

  参考博客:https://www.cnblogs.com/andzhang/p/6075814.html(对,还是它)

 1 // 设置文件上传路径
 2                 需要在webRoot下新建一个名为upload的文件夹,在里面再建个名为photo的文件夹
 3             String upload = this.getServletContext().getRealPath("upload/photo");
 4             
 5             // 获取系统默认的临时文件保存路径,该路径为Tomcat根目录下的temp文件夹
 6             String temp = System.getProperty("java.io.tmpdir");
 7             // 设置缓冲区大小为 5M
 8             factory.setSizeThreshold(1024 * 1024 * 5);
 9             // 设置临时文件夹为temp
10             factory.setRepository(new File(temp));
11             // 用工厂实例化上传组件,ServletFileUpload 用来解析文件上传请求
12             ServletFileUpload servletFileUpload = new ServletFileUpload(factory);

  这段代码是接收文件前的准备,下面是关于ServletFileUpload的介绍,【参考博客:https://blog.csdn.net/Superman___007/article/details/80943449】:

  1.ServletFileUpload upload=new ServletFileUpload(factory);
                创建一个上传工具,指定使用缓存区与临时文件存储位置.
        2.List<FileItem> items=upload.parseRequest(request);
                它是用于解析request对象,得到所有上传项.每一个FileItem就相当于一个上传项.
        3.boolean flag=upload.isMultipartContent(request);
                用于判断是否是上传.
                可以简单理解,就是判断encType="multipart/form-data";
        4.设置上传文件大小.
                void setFileSizeMax(long fileSizeMax) 设置单个文件上传大小 .
                void  setSizeMax(long sizeMax) 设置总文件上传大小 .
        5.解决上传文件中文名称乱码.
                setHeaderEncoding("utf-8");
                注意:如果使用reqeust.setCharacterEncoding("utf-8")也可以,但不建议使用。
  其他文件类知识还在学习中。

猜你喜欢

转载自www.cnblogs.com/20183711PYD/p/12722595.html