app手机端如何把图片上传到java服务器端

您所在的位置:网站首页 上传照片app app手机端如何把图片上传到java服务器端

app手机端如何把图片上传到java服务器端

2024-07-12 19:29:35| 来源: 网络整理| 查看: 265

举个例子

手机端

        apicloud做的app前端

服务器

       java语言

实现什么?

  在手机端上传图片到java服务器上

所需的jar包

common-io.jar

common-fileupload.jar

apicloud 上的html代码,以下是注意点

1、action是你后台服务器的ip地址+端口号+项目名+类名

2、method="post" 不是get

3、enctype="multipart/form-data"要设置,不然后来可能导致图片上传不成功

4、文件的类型type="file"

5、提交的方式submit

上传图片 : 第一种、html+servlet HelloServlet代码如下 package cn.com.servlet; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.util.List; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; 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; public class HelloServlet extends HttpServlet { private static final long serialVersionUID = 1L; public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request, response); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 设置字符的编码 request.setCharacterEncoding("utf-8"); response.setCharacterEncoding("utf-8"); //你读取手机端app图片以后要把图片存放在服务器上的位置 String fpath = "D:/myapp"; File fname=new File(fpath); // 获得磁盘文件条目工厂 DiskFileItemFactory factory = new DiskFileItemFactory(); // 设置暂放文件的存储室,这个存储室可以和最终存储文件的文件夹不同。因为当文件很大的时候回占用过多的内存,就暂放存储室 //设置所有上传数据的最大值,单位字节long 1M factory.setSizeThreshold(1024 * 1024); factory.setRepository(fname); // 上传工具处理类 ServletFileUpload upload = new ServletFileUpload(factory); // 调用parseRequest方法,获得上传文件fileitem的集合list可实现多文件上传 try { // 解析请求 List list = (List)upload.parseRequest(request); for (FileItem item : list) { // 获取表单属性的名字 String name = item.getFieldName(); // 如果获取的变动信息是普通的文本信息的话,即通过页面表单的形式传递来的字符串 if (item.isFormField()) { String value = item.getString(); request.setAttribute(name, value); } // 如果传过来的是图片。音频 else { // 获取路径名 String value = item.getName(); // 截取上传文件的字符串的名字,+1是去掉反斜杠 String filename = value.substring(value.lastIndexOf("\\") + 1); // 第三方提供的方法直接写到文件中 InputStream in = item.getInputStream(); FileOutputStream out = new FileOutputStream(new File(fpath + "/" + filename)); int length = 0; byte[] by = new byte[1024]; System.out.println("获取文件总量的容量" + item.getSize()); while ((length = in.read(by)) != -1) { out.write(by, 0, length); } in.close(); out.close(); System.out.println("图片上传到" + fpath + "/" + filename); } } // 如果chunguo } catch (FileUploadException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }   web.xml里面配置servlet HelloServlet cn.com.servlet.HelloServlet HelloServlet /HelloServlet

到这里,所有的代码,细节点,都介绍完毕,在手机端上传app到电脑服务器上,应该成功实现了!!

但是,我的比较特殊,我使用ssh框架做的,我百度了一个下午+一个晚上+一个早上,

List list 是null的,一直都是null的?

原因是

List fileItemList = upload.parseRequest(request);

解析表单中的每一个表单项,封装成FileItem对象,以List方式返回。

当前台有请求发送过来的时候,会由

将web.xml配置文件做相应修改即可完成。修改如下:

struts2 org.apache.struts2.dispatcher.FilterDispatcher struts2 /*

改成

struts2 org.apache.struts2.dispatcher.FilterDispatcher struts2 *.action

问题就解决了,真神奇!

第二种、html+ssh框架

前提所需的jar包

     common-io.jar

     common-fileupload.jar

web.xml里面拦截器配置 struts2 org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter struts2 *.action html页面 上传图片 : struts.xml文件相关配置    最重要的部分来了 思路:

根据拦截器自动给前后台属性名称一致的属性赋值,获取file文件.tmp格式的,根据文件的输入输出流复制文件到服务器上

java类 package cn.com.service; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Repository; @Repository(value = "copyImage") @Scope("prototype") public class CopyImage { private File file; public File getFile() { return file; } public void setFile(File file) { this.file = file; } public String GenerateImage(){ //upload_aa00f2d2_bb13_4737_8033_f1394d1b0911_00000000.tmp System.out.println("文件名"+file.getName()); //把文件写到里面 File fl=new File("D:/myapp"+ "/a.jpg"); FileOutputStream fout=null; InputStream in=null; try { fout=new FileOutputStream(fl); in=new FileInputStream(file); byte [] by=new byte[1024]; int length=0; try { while((length=in.read(by))>-1){ fout.write(by, 0, length); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally{ try { in.close(); fout.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } System.out.println(); return null; } } 注意:

我们可以看到app手机端接收的file是tmp形式的,所以我们把这个文件放在服务器文件夹里面的时候,记得给后缀名改成jpg或者png图片格式的

 

从手机拷贝下来的图片

 



【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭