springmvc+uploadify3.2.1完整代码示例,java,jsp

  1. 前台页面: 引入js和css

<script type="text/javascript" src="${STATIC_FILE_PATH}/js/jquery/jquery-1.10.js${STATIC_FILE_VERSION}"></script>
<link type="text/css" rel="stylesheet" href="${STATIC_FILE_PATH}/js/jPlug/uploadify/uploadify.css${STATIC_FILE_VERSION}"></link>

<script type="text/javascript" src="${STATIC_FILE_PATH}/js/jPlug/uploadify/jquery.uploadify.min.js${STATIC_FILE_VERSION}"></script>:

2:脚本内容:

如下参数你还没搞懂的话 ,请查阅官方文档,地址:http://www.uploadify.com/documentation/

<script type="text/javascript">
$(document).ready(function(){
    $(function() {
        $(‘#file_upload‘).uploadify({
            ‘swf‘      : ‘${STATIC_FILE_PATH}/js/jPlug/uploadify/uploadify.swf‘,
            ‘uploader‘ : ‘${CONTEXT_PATH}/shop/upload.html‘,
            ‘height‘: 25,
            ‘whith‘ :120,
            ‘auto‘  : false,
            ‘fileDataName‘:‘file‘,
            ‘buttonText‘ : ‘选择图片...‘,
            ‘fileTypeExts‘ : ‘*.gif; *.jpg; *.png‘,
            ‘multi‘    : false,
            ‘method‘   :‘post‘,
            ‘debug‘:true,
            ‘onUploadSuccess‘ : function(file, data, response) {
                 alert(‘The file ‘ + file.name + ‘ was successfully uploaded with a response of ‘ + response + ‘:‘ + data);
            },
            ‘onUploadError‘ : function(file, errorCode, errorMsg, errorString) {
                alert(‘The file ‘ + file.name + ‘ could not be uploaded: ‘ + errorString);
               }
        });
    });
});
</script>

2:<body>内容:

<body >
          <input id="file_upload" type="file" name="file"/>
           <a href="javascript:$(‘#file_upload‘).uploadify(‘upload‘, ‘*‘)">上传文件</a> | <a href="javascript:$(‘#file_upload‘).uploadify(‘stop‘)">停止上传!</a>  
</body>

3:后台controller:

@RequestMapping(value = "/shop/upload",method=RequestMethod.POST)
    @ResponseBody
    public Object uploadHandlerForUploadify(String picHref,HttpServletRequest request)
            throws Exception {
        Integer userID = 0;
        MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
        MultipartFile multipartFile = multipartRequest.getFile("Filedata");
        /** 写文件前先读出图片原始高宽 **/
        byte[] bytes = multipartFile.getBytes();
        InputStream is = new ByteArrayInputStream(bytes);
        int width = 0; // 原始图片宽
        int height = 0; // 原始图片高
        try {
            BufferedImage bufimg = ImageIO.read(is);
            // 只有图片才获取高宽
            if (bufimg != null) {
                width = bufimg.getWidth();
                height = bufimg.getHeight();
            }
            is.close();
        } catch (Exception e) {
            e.printStackTrace();
            loger.error(e.getMessage());
            is.close();
            throw new Exception("uploadify上传图片读取图片高宽时发生异常!");
        }

/** 拼成完整的文件保存路径加文件 **/
        String originalFilename = multipartFile.getOriginalFilename(); // 文件全名
        String suffix = StringUtil.substringAfter(originalFilename, "."); // 后缀
        // 文件名转码
        // fileName = Base64.StringToBase64(fileName);
        // fileName = StringUtil.join(fileName, suffix);
        UploadFilePathVO uploadFile = UploadFilePathUtil.initFileUpload(userID, "test", suffix, width, height);
        File file = new File(uploadFile.getRealPath());
        multipartFile.transferTo(file);

return uploadFile;
    }

4:自定义的上传路径工具类:

/**
     * 获取图片上传路径(处理高宽)
     *
     * @return
     */
    public static UploadFilePathVO initFileUpload(Integer userID, String imageType, String suffix, int width, int height) {
        String randomKey = RandomUtil.getRandomString(6);
        Date date = new Date();
        String dateStr = new SimpleDateFormat("yyyyMMdd").format(date);
        String timeStr = new SimpleDateFormat("HHmmssSSS").format(date);
        int hashcode = Math.abs(userID.hashCode() % 256);

String relativePath = StringUtil.join(imageType, "/", hashcode, "/", userID, "/", dateStr, "/");
        String realPath = StringUtil.join(Constants.UPLOAD_REALPATH, "/", relativePath);

File logoSaveFile = new File(realPath);
        if (!logoSaveFile.exists()) {
            logoSaveFile.mkdirs();
        }
        // 图片文件名: 时间戳 + 随机串 + 高宽
        String fileName = StringUtil.join(timeStr, randomKey, ‘_‘, height, ‘_‘, width, ‘.‘, suffix);
        UploadFilePathVO uploadFile = new UploadFilePathVO();
        uploadFile.setRelativePath(StringUtil.join(relativePath, fileName));
        uploadFile.setRealPath(StringUtil.join(realPath, fileName));
        return uploadFile;
    }

5:UploadFilePathVO类:

public String realPath;
    public String relativePath;
    private int imgHeight; // 上传图片的高
    private int imgWidth; // 宽

时间: 2025-01-09 14:16:10

springmvc+uploadify3.2.1完整代码示例,java,jsp的相关文章

快速上手代码示例 Java后台最新框架

A 代码生成器(开发利器);     增删改查的处理类,service层,mybatis的xml,SQL( mysql   和oracle)脚本,   jsp页面 都生成   就不用写搬砖的代码了,生成的放到项目里,可以直接运行B 阿里巴巴数据库连接池druid;  数据库连接池  阿里巴巴的 druid.Druid在监控.可扩展性.稳定性和性能方面都有明显的优势C 安全权限框架shiro ;  Shiro 是一个用 Java 语言实现的框架,通过一个简单易用的 API 提供身份验证和授权,更安

基于的朴素贝叶斯的文本分类(附完整代码(spark/java)

本文主要包括以下内容: 1)模型训练数据生成(demo) 2 ) 模型训练(spark+java),数据存储在hdfs上 3)预测数据生成(demo) 4)使用生成的模型进行文本分类. 一.训练数据生成 spark mllib模型训练的输入数据格式通常有两种,一种叫做 LIBSVM 格式,样式如下: label index1:value1 index2:value2 label为类别标签,indexX为特征向量索引下标,value为对应的那维的取值. 另一种格式样式如下: label f1,f2

迪杰斯特拉算法完整代码(Java)

package com.rao.graph; import java.util.*; /** * @author Srao * @className Dijkstra * @date 2019/12/10 22:15 * @package com.rao.graph * @Description 迪杰斯特拉算法 */public class Dijkstra { /** * 图的顶点 */ private static class Vertex{ String data; Vertex(Stri

Spring RestTemplate实现服务间的远程调用完整代码示例

父pom: 服务提供方 pom: provider配置文件: provider启动类: provider实体类: provider Mapper: 内置了增删改查的方法 provider Service: 屏蔽报错: provider Controller: 服务调用方 pom: Consumer启动类: Consumer实体类: Consumer的Controller: 统一管理启动类: 可以直接在面板启动~ 测试调用: 原文地址:https://www.cnblogs.com/niwotax

jxl创建Excel文件java代码示例

记得要下载 并 导入 jxl.jar 包,免积分下载地址:http://download.csdn.net/detail/u010011052/7561041 package Test; import java.io.*; import jxl.*; import jxl.format.Colour; import jxl.write.*; public class JXLTest { private static WritableWorkbook book; private static Wr

java 翻盖hashCode()深入探讨 代码示例

package org.rui.collection2.hashcode; /** * 覆盖hashcode * 设计HashCode时最重要的因素 就是:无论何时,对同一个对象调用HashCode都应该产生同样的值, * 如果你的HashCode方法依赖于对象中易变的数据,用户就要当心了,因为此数据发生变化 时 * HashCode就会生成一个不同的散列码,相当于产生一个不同的健 * 此外 也不应该使HashCode依赖于具有唯一性的对象信息,尤其是使用this的值,这只能很糟糕, * 因为这

Android Java使用JavaMail API发送和接收邮件的代码示例

JavaMail是Oracle甲骨文开发的Java邮件类API,支持多种邮件协议,这里我们就来看一下Java使用JavaMail API发送和接收邮件的代码示例 使用Javamail发送邮件,必需的jar包(请下载javamail的源文件,官方下载页:http://www.oracle.com/technetwork/java/javamail/index-138643.html):mailapi.jar.定义了收发邮件所使用到的接口API:smtp.jar.包含了发送邮件使用到的类:pop3.

java mail实现Email的发送,完整代码

java mail实现Email的发送,完整代码 1.对应用程序配置邮件会话 首先, 导入jar <dependencies> <dependency> <groupId>com.sun.mail</groupId> <artifactId>javax.mail</artifactId> <version>1.5.2</version> </dependency> </dependencies

使用XStream注解实现Java对象与XML互相转换的代码示例

本文记录一下使用xstream这个api的注解特性对Java对象与XML字符串相互转换的一些代码示例.    我们很多人都处理过XML文件,也有很多非常成熟的第三方开源软件.如:jdom.dom4j等.虽然他们的功能非常强大,但在使用上还是有点不那么习惯.对于格式比较固定的XML文档,它的结构没有变化或是很少变化,这时将它转换成我们熟悉的Java对象来操作的话,会使工作变得更容易一些,而xstream正好可以满足这一点.    本文所用xstream的版本为:1.4.7 <dependency>