采用jquery.form.js异步上传图片,并结合<form>表单

<script type="text/javascript">
//采用jquery.form.js异步上传图片,并结合<form>表单 function uploadPicture() {
var options = {
//请求路径
url : "/upload/uploadPic.do",
dataType : "json",
type : "post",
success : function(data) {
//处理结果
//将相对路径设置给隐藏域中,提交时用
$("#imgUrl").val(data.path);
//将全路径设置给img标签,显示图片用
$("#allImgUrl").attr("src", data.url);
}
}
$("#jvForm").ajaxSubmit(options);
}
</script> <tr>
<td width="20%" class="pn-flabel pn-flabel-h"></td>
<td width="80%" class="pn-fcontent">
<img width="100" height="100" id="allImgUrl" />
<!-- 图片存在数据库的路径 -->
<input type="hidden" id="imgUrl" name="imgUrl"></input>
<input type="file" onchange="uploadPicture()" name="uploadPic" /></td>
</tr>

一定要在form表单中填写enctype="multipart/form-data"

<form id="jvForm" action="/brand/add.do" method="post" enctype="multipart/form-data">  </form>

在springmvc.xml文件中添加文件软件器

    <!-- 图片转换器 -->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="maxUploadSize" value="10485760"></property>
</bean>

编写文件上传UploadController.java

 package cn.lzc.code.controller.admin;

 import java.io.IOException;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Random; import javax.servlet.http.HttpServletResponse; import org.apache.commons.io.FilenameUtils;
import org.json.JSONObject;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile; import com.sun.jersey.api.client.Client;
import com.sun.jersey.api.client.ClientHandlerException;
import com.sun.jersey.api.client.UniformInterfaceException;
import com.sun.jersey.api.client.WebResource; import cn.lzc.code.web.Constants;
import cn.lzc.common.web.ResponseUtils; /**
* 上传文件管理Controller
*
* @author admin
*
*/
@Controller
public class UploadController { /**
* 异步上传图片
*
* @param uploadFile
* @param response
*/
@RequestMapping(value="/upload/uploadPic.do",method=RequestMethod.POST)
public void uploadBrandPic(@RequestParam(required = false) MultipartFile uploadPic, HttpServletResponse response) {
// 图片名称生成策略---采用时间格式(精确到毫秒)并追加随机3位(10以内)数字
// 精确到毫秒
DateFormat df = new SimpleDateFormat("yyyyMMddHHmmssSSS");
String picName = df.format(new Date());
//随机再生成3位10以内的数
Random r=new Random();
for (int i = 0; i < 3; i++) {
picName+=r.nextInt(10);
}
//获取扩展名
String originalFilename = uploadPic.getOriginalFilename();
String ext = FilenameUtils.getExtension(originalFilename);
//相对路径
String path="upload/"+picName+"."+ext;
//全路径
String url="http://localhost:8088/image-web/"+path; //jersey发送另一台Tomcat(可读写)
// 实例化Jersey
Client client=new Client();
//想要发送到的服务器地址,记住,必须设置tomcat服务器的权限,不然无法上传到tomcat
//设置请求路径
WebResource resource = client.resource(url);
try {
//发送开始put
resource.put(String.class, uploadPic.getBytes());
} catch (UniformInterfaceException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClientHandlerException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//返回json数据给页面,(包括url回显路径,Path保存数据库的路径)
JSONObject jo=new JSONObject();
jo.put("path", path);
jo.put("url", url);
//返回数据给页面
ResponseUtils.renderJson(response, jo.toString());
}
}

写一个RequestUtils.java工具类,用来响应相应的数据到前台页面

 package cn.lzc.common.web;

 import java.io.IOException;

 import javax.servlet.http.HttpServletResponse;

 /**
* Response帮助类 支持JSON XML Text
*
* @author admin
*
*/ public class ResponseUtils {
// 发送Json
public static void renderJson(HttpServletResponse response, String text) {
rend(response, "application/json;charset=UTF-8", text);
} // 发送xml
public static void renderXml(HttpServletResponse response, String text) {
rend(response, "text/xml;charset=UTF-8", text);
} // 发送text
public static void renderText(HttpServletResponse response, String text) {
rend(response, "text/plain;charset=UTF-8", text);
} // 发送
public static void rend(HttpServletResponse response, String contextType, String text) {
// 设置传输类型
response.setContentType(contextType);
// 发送
try {
response.getWriter().write(text);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

使用Jersey上传文件的更多相关文章

  1. jersey上传文件解决办法

    这两天在使用jersey 构建的jersey JAX-RS REST服务器,在通过POST方法上传文件的时候,如果根据example来操作的话会引发如下异常: SEVERE: Missing depe ...

  2. idea 内置tomcat jersey 上传文件报403错误

    Request processing failed; nested exception is com.sun.jersey.api.client.UniformInterfaceException: ...

  3. idea 内置tomcat jersey 跨服务器 上传文件报400错误

    报错内容 com.sun.jersey.api.client.UniformInterfaceException: PUT http://.jpg returned a response status ...

  4. IE8/9 JQuery.Ajax 上传文件无效

    IE8/9 JQuery.Ajax 上传文件有两个限制: 使用 JQuery.Ajax 无法上传文件(因为无法使用 FormData,FormData 是 HTML5 的一个特性,IE8/9 不支持) ...

  5. 三种上传文件不刷新页面的方法讨论:iframe/FormData/FileReader

    发请求有两种方式,一种是用ajax,另一种是用form提交,默认的form提交如果不做处理的话,会使页面重定向.以一个简单的demo做说明: html如下所示,请求的路径action为"up ...

  6. asp.net mvc 上传文件

    转至:http://www.cnblogs.com/fonour/p/ajaxFileUpload.html 0.下载 http://files.cnblogs.com/files/fonour/aj ...

  7. app端上传文件至服务器后台,web端上传文件存储到服务器

    1.android前端发送服务器请求 在spring-mvc.xml 将过滤屏蔽(如果不屏蔽 ,文件流为空) <!-- <bean id="multipartResolver&q ...

  8. .net FTP上传文件

    FTP上传文件代码实现: private void UploadFileByWebClient() { WebClient webClient = new WebClient(); webClient ...

  9. 通过cmd完成FTP上传文件操作

    一直使用 FileZilla 这个工具进行相关的 FTP 操作,而在某一次版本升级之后,发现不太好用了,连接老是掉,再后来完全连接不上去. 改用了一段时间的 Web 版的 FTP 工具,后来那个页面也 ...

随机推荐

  1. oracle转mysq遇到的问题--------1.nextval问题

    oralce里面有一个问题,在做采购单模块时,遇到如下问题: 所以我们要解决这个问题: 第一步: 并发生成方式: sequence的并发生成方式同非并发生成方式都需要建立sequence表,如下: 一 ...

  2. 错误:OSError: [Errno 1] Operation not permitted: 'lib/python/six-1.4.1-py2.7.egg-info'

    解决办法: $ $ pip install mock --ignore-installed six --user 问题:安装mock时报错: (venv)➜ test git:(master) pip ...

  3. Java8学习笔记(四)--接口增强

    增强点 静态方法 public interface InterfacePlus { void run(); static Date createDate(){ return new Date(); } ...

  4. mybatis中批量插入以及更新

    1:批量插入 批量插入就是在预编译的时候,将代码进行拼接,然后在数据库执行 <insert id="batchInsert" parameterType="java ...

  5. Unity3D Shader 半兰伯特光照模型

    //效果预览 //Shader代码 Shader "Unlit/HalfLambert" { Properties { _MainTex ("Texture", ...

  6. C# 数组转json

    ////////试题信息///////////////// // 已知 // h.d两个数组分别表示表头和内容 // 要求 // 编写函数一:rs2Array // 返回一个数组,每一项为一个对象. ...

  7. L - Fire Game

    Fat brother and Maze are playing a kind of special (hentai) game on an N*M board (N rows, M columns) ...

  8. Jenkins Docker安装及Docker build step插件部署配置

    生产部署环境:A:192.168.1.2 B:192.168.1.3  两台服务器系统均是Centos 7.3 , Docker版本都1.12.6 Jenkins安装操作步骤: 1.在A服务器上使用命 ...

  9. Selenium模拟浏览器抓取淘宝美食信息

    前言: 无意中在网上发现了静觅大神(崔老师),又无意中发现自己硬盘里有静觅大神录制的视频,于是乎看了其中一个,可以说是非常牛逼了,让我这个用urllib,requests用了那么久的小白,体会到sel ...

  10. Django----From组件

    Django的Form主要具有一下几大功能: 生成HTML标签 验证用户数据(显示错误信息) HTML Form提交保留上次提交数据 初始化页面显示内容 1.创建Form类 from django.f ...