package etcom.servlet;

 import java.io.File;
import java.io.IOException;
import java.sql.Connection;
import java.util.ArrayList;
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.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.apache.commons.lang.StringUtils;
import org.json.JSONArray;
import org.json.JSONObject; import etcom.servlet.DBUtil;
import etcom.servlet.SqlActuator; @SuppressWarnings("serial")
public class Execute extends HttpServlet { public Execute() {
super();
} public void destroy() {
super.destroy(); // Just puts "destroy" string in log
// Put your code here
} public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
// String tr = IoToJsonUtils.getIoToJson(request, "UTF-8");
// System.out.println(tr);
String vcRes = "";
String detectTaskJOSN = "";
List<String> sqls = new ArrayList<String>();
Connection conn = DBUtil.getConnection();
SqlActuator sa = new SqlActuator(conn);
try{
String basePath = request.getSession().getServletContext().getRealPath("/");
String filePath = "../images/androidFiles/";
String filename = "";
File file0 =new File(basePath + filePath);
if(!file0.exists()&&!file0.isDirectory())file0.mkdirs();
DiskFileItemFactory factory = new DiskFileItemFactory();
factory.setRepository(file0);
//设置 缓存的大小
factory.setSizeThreshold(1024*1024);
//文件上传处理
ServletFileUpload upload = new ServletFileUpload(factory);
String encoding = request.getCharacterEncoding();
upload.setHeaderEncoding(encoding);
@SuppressWarnings("unchecked")
List<FileItem> list = (List<FileItem>)upload.parseRequest(request);
for(FileItem item : list){
//获取属性名字
String name = item.getFieldName();
//如果获取的 表单信息是普通的 文本 信息
if(item.isFormField()&&"detectTaskJOSN".equals(name)){
//获取用户具体输入的字符串,因为表单提交过来的是 字符串类型的
detectTaskJOSN = new String(item.getString(encoding));
System.out.println("detectTaskJOSN的值:"+detectTaskJOSN);
}else{
if(StringUtils.isNotEmpty(name)){
//获取路径名
String value = item.getName();
//索引到最后一个反斜杠
int start = value.lastIndexOf("\\");
//截取 上传文件的 字符串名字,加1是 去掉反斜杠,
filename = value.substring(start+1);
File file1 =new File(basePath + filePath + filename);
if(file1.exists())file1.delete();
//写到磁盘上
item.write(file1);//第三方提供的
System.out.println("上传成功:"+filename);
}
}
}
JSONObject joTask = new JSONObject(detectTaskJOSN);
String _vcTaskNo = joTask.get("vcTaskNo").toString();
String _vcUserId = joTask.get("vcUserId").toString();
String _vcEquipCode = joTask.get("vcEquipCode").toString();
String _vcEquipType = joTask.get("vcEquipType").toString();
String _vcStatus = joTask.get("vcStatus").toString();
String _vcMemo = joTask.get("vcMemo").toString();
String _dtScan = joTask.get("dtScan").toString();
String _dtHandle = joTask.get("dtHandle").toString();
String _vcHandleFlag = joTask.get("vcHandleFlag").toString();
String _vcHandleMemo = joTask.get("vcHandleMemo").toString();
String _vcHandler = joTask.get("vcHandler").toString();
String _nTypeId = joTask.get("nTypeId").toString();
String _nOid = joTask.get("nOid").toString();
String _nCodeId = joTask.get("nCodeId").toString();
String sql = " exec proc_detecttask_add '" + _vcTaskNo + "','" +
_vcUserId + "','" + _vcEquipCode + "','" + _vcEquipType +
"','" + _vcStatus + "','" + _vcMemo + "','" +
filename + "','" + _dtScan + "','" + _dtHandle +
"','" + _vcHandleMemo + "'," + _vcHandleFlag + ",'" +
_vcHandler + "'," + _nTypeId + "," + _nOid + "," +
_nCodeId;
System.out.println(sql);
sqls.add(sql); JSONArray jaDicts = new JSONArray(joTask.get("jaDicts").toString());
for(int idx = 0; idx < jaDicts.length(); idx++){
JSONObject joDict = (JSONObject)jaDicts.get(idx);
String _vcDetectInfo = joDict.get("vcDetectInfo").toString();
String _vcDetectValue = joDict.get("vcDetectValue").toString();
String _vcUnit = joDict.get("vcUnit").toString();
sql = "Insert Into T_DetectTask_Detail(vcTaskNo,vcDetectInfo,vcDetectValue,vcUnit) values ('" +
_vcTaskNo +
"','" +
_vcDetectInfo +
"','" + _vcDetectValue + "','" + _vcUnit + "')";
System.out.println(sql);
sqls.add(sql);
}
sa.batchExec(sqls);
vcRes = "{\"vcRes\":\"success\"}";
}catch(Exception e){
e.printStackTrace();
vcRes = "{\"vcRes\":\"fail\"}";
}finally{
DBUtil.close(null, null, conn);
response.getWriter().println(vcRes);
}
} public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException { doGet(request, response);
} public void init() throws ServletException {
// Put your code here
}
}

Android、iOS与Servlet接口上传文件和JSON串的交互的更多相关文章

  1. Servlet异步上传文件

    这里需要用到插件ajaxfileupload.js,jar包:commons-fileupload-1.3.2.jar,commons-io-2.5.jar 注意红色部分的字!!!! 1.创建一个we ...

  2. Flex和Servlet结合上传文件

    Flex和Servlet结合上传文件 1.准备工作 (1)下载文件上传的组件,commons-fileupload-1.3.1.jar (2)下载文件输入输出jar,commons-io-2.4.ja ...

  3. 使用python或robotframework调multipart/form-data接口上传文件

    这几天调一个multipart/form-data类型的接口,遇到点小阻碍.之前同事有使用urllib库写了个类似的方法实现,比较长,想要改的时候发现不太好使.在网上查找发现用requests库做这个 ...

  4. Servlet 实现上传文件以及同时,写入xml格式文件和上传

    package com.isoftstone.eply.servlet; import java.io.BufferedReader; import java.io.BufferedWriter; i ...

  5. Java Servlet 接收上传文件

    在Java中使用 Servlet 来接收用户上传的文件,需要用到两个apache包,分别是 commons-fileupload 和 commons-io 包: 如果直接在doPost中,使用requ ...

  6. Android通过HTTP协议实现上传文件数据

    SocketHttpRequester.java package cn.itcast.utils; import java.io.BufferedReader; import java.io.Byte ...

  7. Android应用开发中webview上传文件的几种思路

    1. 常规方法,重写WebChromeClient 的 openFileChooser 方法 private class MyWebChromeClient extends WebChromeClie ...

  8. 使用RestTemplate调用接口上传文件

    场景 接口接受一个文件,缓存在本地,验证文件的完整性及内容,然后将文件上传至云服务器: 下面只写利用RestTemplate将文件上传至云服务器,至于文件上传以及缓存在本地可以参考:JAVA文件上传: ...

  9. java 调用Spring接口上传文件及其他参数填充

    第一步:在Spring配置中添加以下内容 <!-- 配置MultipartResolver 用于文件上传 使用spring的CommosMultipartResolver --> < ...

随机推荐

  1. Educational Codeforces Round 82 (Rated for Div. 2)E(DP,序列自动机)

    #define HAVE_STRUCT_TIMESPEC #include<bits/stdc++.h> using namespace std; ],t[]; int n,m; ][]; ...

  2. 搭建Hexo一键生成,同步部署

    全网最全小白搭建Hexo+Gitee/Coding/Github 全网最全小白搭建Hexo+Gitee/Coding/Github 本站内容已全部转移到https://www.myyuns.ltd,具 ...

  3. 378. 有序矩阵中第K小的元素

    Q: A: //O(NK) class Solution { public: int kthSmallest(vector<vector<int>>& matrix, ...

  4. 如何预测股票分析--先知(Prophet)

    在上一篇中,我们探讨了自动ARIMA,但是好像表现的还是不够完善,接下来看看先知的力量! 先知(Prophet) 有许多时间序列技术可以用在股票预测数据集上,但是大多数技术在拟合模型之前需要大量的数据 ...

  5. 编程道拓扑bcd.top 0x01/ 开局第一篇: 随便聊聊/ 随笔

    0x01 开局 编程道拓扑(bcd.top)是一个前端从业者的思考和总结, 如果你喜欢, 欢迎关注! 作者是一个前端从业者, 本系列会总结作者在工作和学习中的一些思考, 会有具体的技术点, 也会有关于 ...

  6. TinyXML解析

    TinyXML介绍 最近做一个负载均衡的小项目,需要解析xml配置文件,用到了TinyXML,感觉使用起来很容易,给出一个使用TinyXML进行XML解析的简单例子,很多复杂的应用都可以基于本例子的方 ...

  7. m大子段和 hdu1024

    给出n个数,m个区间: 求选区m个区间的最大值: #include<cstdio> #include<algorithm> #include<math.h> #in ...

  8. Nuxt配置动态路由以及参数校验

    动态路由就是带参数的路由.比如我们商品列表里很多商品详细页,这时候就需要动态路由的帮助了. 比如我们新建一个commodity文件夹,新建一个index.vue 文件,然后新建一个_id.vue (以 ...

  9. Ubuntu18.04安装caffe python3.6 opencv3.2 CPU

    设置ubuntu的softwares&updates的源为国内源,这样会提高下载速度. 如果是安装python相关库,为提高速度使用: pip3 install 要下载的库 -i https: ...

  10. 老大难的 Java ClassLoader,到了该彻底理解它的时候了

    ClassLoader 是 Java 届最为神秘的技术之一,无数人被它伤透了脑筋,摸不清门道究竟在哪里.网上的文章也是一篇又一篇,经过本人的亲自鉴定,绝大部分内容都是在误导别人.本文我带读者彻底吃透 ...