uploadify是一个jquery插件,用来实现文件上传的功能。

20160724 看起来感觉挺麻烦的

一般会买一个html5版的。

html

<input id="custom_file_upload" type="file" name="Filedata" />

js

//关键是路径要设置正确
//总会发起请求:http://localhost:8080/jyxt/img/uploadify-cancel.png,不知道从哪发起的?
function inituploadimge(){
$('#custom_file_upload1').uploadify({
'swf' : path_t+'js/uploadify.swf',
     //后台处理程序的URL
'uploader' : path_t+'manage/fileupload/',
'method' : "post",
'use_query_string': true,
'post_params': {
"hello" : encodeURI("你好,我是","utf-8"),
"baseurl" : "userfiles/images/linkimages/"
},
'cancelImage' : path_t+'images/cancel.png',
'buttonText' : '浏览',
'buttonImg' : path_t+'images/sel.png',
'queueID' : 'custom-queue1',
'fileTypeExts':'*.jpg;*.gif;*.png;',
'fileTypeDesc':'图片文件',
'removeCompleted': true,
'onSelectOnce' : function(event,data) {
$('#custom-queue1').text('文件上传中!');
},
'onUploadSuccess' : function(file, data, response) {
$('#custom-queue1').text('上传成功');
$('#picUrl').attr("value",data);
}
});
}

controller

//存储的路径设置比较麻烦
//1、savePath如何设置基础的路径?baseurl是传过来的,相对于webcontent的路径。
//2、保存时,会保存到tomcat下,应该保存在jyxt中呀?
//3、saveFile.getAbsolute()可以得到文件存储的路径。
//4、request.getServletPath()  是uploader的值
@RequestMapping(value = "/manage/fileupload/", method = RequestMethod.POST)
public void fileUpload(HttpServletRequest request,HttpServletResponse response) throws Exception {
//设置路径
String baseurl=request.getParameter("baseurl");
//路径有问题
String savePath = request.getSession().getServletContext().getRealPath("")+"/"+baseurl; DiskFileItemFactory fac = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(fac); String filename=""; File f1 = new File(savePath);
if (!f1.exists()) {
f1.mkdirs();
}
List<FileItem> fileList = null;
fileList = (List<FileItem>) upload.parseRequest(request);
Iterator<FileItem> it = fileList.iterator(); String name = "";
String extName = "";
while (it.hasNext()) { FileItem item = it.next();
if (!item.isFormField()) {
name = item.getName();
if (name == null || name.trim().equals("")) {
continue;
}
if (name.lastIndexOf(".") >= 0) {
extName = name.substring(name.lastIndexOf("."));
}
Object[] test = {"gif","png","jpg","doc","docx","xls","xlsx","ppt","pptx","ptf","rar","zip",""};
if(!ArrayUtils.contains(test, extName.toLowerCase().substring(1)))
{
continue;
}
File file = null;
do {
name=DateUtil.getNowDateString();
filename=savePath + name + extName;
file = new File(filename);
} while (file.exists());
File saveFile = new File(filename);
try {
item.write(saveFile);
} catch (Exception e) {
e.printStackTrace();
}
}
}
response.getWriter().print(request.getContextPath()+"/userfiles/images/linkimages/"+name+extName);
}

以上代码是可以使用的。不过因为uploadify版本不同,文件路径不同,可能会有问题。只是借此记录一些关键的问题。

uploadify的碎碎念 upload的更多相关文章

  1. Linux碎碎念

    在学习Linux过程中,有许多有用的小技巧.如果放在纸质的笔记本上,平时查阅会相当不方便.现在以一种“碎碎念”的方式,汇集整理在此,目前还不是很多,但随着学习.工作的深入,后续会陆陆续续添加更多的小技 ...

  2. 一些关于Linux入侵应急响应的碎碎念

    近半年做了很多应急响应项目,针对黑客入侵.但疲于没有时间来总结一些常用的东西,寄希望用这篇博文分享一些安全工程师在处理应急响应时常见的套路,因为方面众多可能有些杂碎. 个人认为入侵响应的核心无外乎四个 ...

  3. 一个谷粉和3年的Google Reader重度使用者的碎碎念

    2013-03-14 上午看到Andy Rubin辞去Android业务主管职务.由Chrome及应用高级副总裁继任的新闻,还在想这会给Android带来什么,中午刷微博的时候就挨了当头一棒:Goog ...

  4. Jerry的碎碎念:SAPUI5, Angular, React和Vue

    去年我去一个国内客户现场时,曾经和他们IT部门的一位架构师聊到关于在SAP平台上进行UI应用的二次开发时,UI框架是选用UI5还是Vue这个话题. 我们代表SAP, 向客户推荐使用UI5是基于以下六点 ...

  5. 结对编程ending-我和洧洧的碎碎念

    应该是第一次和队友分工合作去完成一个项目,其中也经历了跳进不少坑又被拉回来的过程,总体来说这对于我俩也的确是值得纪念的一次经历. 我的碎碎念时间…… 对比个人项目和结对编程项目二者需求,前者重在面对不 ...

  6. C语言 · 分分钟的碎碎念

    算法提高 分分钟的碎碎念   时间限制:1.0s   内存限制:256.0MB      问题描述 以前有个孩子,他分分钟都在碎碎念.不过,他的念头之间是有因果关系的.他会在本子里记录每一个念头,并用 ...

  7. 最近关于Qt学习的一点碎碎念

    最近关于Qt学习的一点碎碎念 一直在使用Qt,但是最近对Qt的认识更加多了一些.所以想把自己的一些想法记录下来. Qt最好的学习资料应该是官方的参考文档了.对Qt的每一个类都有非常详细的介绍.我做了一 ...

  8. Java实现 蓝桥杯VIP 算法提高 分分钟的碎碎念

    算法提高 分分钟的碎碎念 时间限制:1.0s 内存限制:256.0MB 问题描述 以前有个孩子,他分分钟都在碎碎念.不过,他的念头之间是有因果关系的.他会在本子里记录每一个念头,并用箭头画出这个念头的 ...

  9. MySQL碎碎念

    1. 如何修改Mysql的用户密码 mysql> update mysql.user set password=password('hello') where user='root'; mysq ...

随机推荐

  1. 3.3 JSP内置对象概述

    1.request 1.1 request获取页面传来的参数,参数通过浏览器网址和后面添加?的方式传达. 传参:”show.jsp?id=001” 获取参数:request.getParameter( ...

  2. git冲突解决方案 Intellij IDEA

    一般在团队合作开发一个项目的过程中,经常出现两个人同时修改一个文件然后都向主master提交commit,这样就会产生冲突(conflict),那么这种情况如何解决? 1 新建分支 如果项目的主分支是 ...

  3. keras—多层感知器识别手写数字算法程序

    #coding=utf-8 #1.数据预处理 import numpy as np #导入模块,numpy是扩展链接库 import pandas as pd import tensorflow im ...

  4. QT隐式数据共享

    QT中许多C++类使用了隐式数据共享,最小化资源拷贝.当作为参数传递时,实际只传递了指针,这是底层完成的,程序员无需担心,即使是在多线程中,从Qt4开始: 记住,尽量使用const迭代器,vector ...

  5. jquery获取当前屏幕宽度

    参考文章 <script type="text/javascript"> $(document).ready(function() { alert($(window). ...

  6. Linux SSH基于密钥交换的自动登陆原理简介及配置说明

    一.原理简介 SSH证书认证登录的基础是一对唯一匹配密钥: 私钥(private key)和公钥(public key).公钥用于对数据进行加密,而且只能用于加密.而私钥只能对使用所匹配的公钥,所加密 ...

  7. 简述Markdown的使用方法

    MarkdownPad Document Markdown的使用技巧 一.标题 一个”#“表示H1.“##”表示H2... 二.列表 第一点 第二点 注意1.2. -与文本之间要有一个空格 这一点 三 ...

  8. BroadcastReceiver接收电量变化的广播-------在代码中动态创建接受者

    本例为动态创建广播接收者即不是在AndroidManifest.xml文件中定义的广播接收着 代码: package com.qf.broadcastreceiver01; import androi ...

  9. discuz回贴通知插件实现-插件的多语言

    如果涉及到页面的展示,模板,提示信息,通常会   1.建立好需要的文字的翻译 在disucz的data/plugindata目录创建一个插件所使用的语言文件,命名方式为: 插件标识符.lang.php ...

  10. 《Google软件测试之道》摘录

    以下是最近看的一本书<Google软件测试之道>里的一些摘录,收获很多. 1.讨论测试开发比并没有什么意义,如果你是一名开发人员,同时也是一名测试人员,如果你的职位头衔上有测试的字样,你的 ...