采用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. msm codec 代码跟踪

    sound/soc/codecs/msm8x16-wcd.c static struct spmi_device_id msm8x16_wcd_spmi_id_table[] = { {"w ...

  2. portfolio

    1.工作量计算逻辑: 原始待办事项: 预估2个冲刺,如下图所示: Sprint1的故事点计划工作量5,空闲工作量28.如下图 Sprint2为预估冲刺,指的是预估待办事项在后续冲刺的预估计划,后续冲刺 ...

  3. Ubuntu下安装和使用zookeeper和kafka

    1.在清华镜像站下载kafka_2.10-0.10.0.0.tgz 和 zookeeper-3.4.10.tar.gz 分别解压到/usr/local目录下 2.进入zookeeper目录,在conf ...

  4. .Net Framework4.5.2 源码命名空间简析

    Miscosoft目前除.Net Core开源外,对于.Net4.5.1 , 4.5.2等后续版本同样开源.资源中包含sln,csproj等以方便我们在vs中打开它们,不过我们不能编译它,因为它缺少r ...

  5. JdbcTemplate in()传参

    1. 实体类 import java.util.List; public class Param { private List<String> names; private List< ...

  6. NUC972---Linux驱动开发

    驱动开发是嵌入式 Linux 产品开发的重要组成部分,驱动是将芯片底层与Linux应用连接起来的桥梁.驱动程序的好坏直接影响和决定着产品的稳定性,稳定的驱动程序是产品可靠性的基石. 编写 Linux ...

  7. 【Spring】Spring中用到的设计模式

    1.简单工厂 又叫静态工厂方法模式,不属于23种设计模式之一. 简单工厂模式的实质是由一个工厂类根据传入的参数,动态决定应该创建哪一个产品类. Spring中的BeanFactory就是简单工厂模式的 ...

  8. Linux Kafka集群管理工具kafka-manager的安装使用

    一.kafka-manager简介 kafka-manager是目前最受欢迎的kafka集群管理工具,最早由雅虎开源,用户可以在Web界面执行一些简单的集群管理操作.具体支持以下内容: 管理多个集群 ...

  9. 安装 powerline

    使用说明: https://powerline.readthedocs.io/en/latest/usage.html ~ vim,在 .vimrc 中添加配置 set rtp+=/usr/lib/p ...

  10. solus 系统 - 安装 mariadb

    # 安装 mariadb(这个系统没有 mysql 库) $ sudo eopkg it mariadb $ sudo eopkg it mariadb-server # 初始化数据文件地址 $ su ...