struts利用插件jqueryupload上传文件,后台处理文件代码

package cn.axhu.education.action.file;

import cn.axhu.education.common.FileSystemConfig;
import cn.axhu.education.common.utils.FileUtils;
import net.ruixin.web.struts2.SimpleActionSupport;
import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.Namespace;
import org.apache.struts2.convention.annotation.ParentPackage;
import org.apache.struts2.dispatcher.multipart.MultiPartRequestWrapper;
import org.json.JSONObject;

import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.io.PrintWriter;
import java.util.*;

/**
 * Created by yi.wang1 on 2015/3/9.
 */
@ParentPackage("default")
@Namespace("/file")
public class ChapterAttachUploadAction extends SimpleActionSupport {

@Action("saveAttachFile")
    public void saveAttachFile() {
        PrintWriter out = null;
        try {
            //初始化变量
            InputStream stream = null;
            String ret_fileName = null;//返回给前端已修改的文件名称
            Map<String, Object> result = new HashMap<String, Object>();
            String ret_filePath;
            File uploadedFile;
            String uuid_fileName;
            try {
                //设置字符集
                request.setCharacterEncoding("UTF-8");
                response.setContentType("text/html; charset=UTF-8");
                out = response.getWriter();

// 文件保存目录路径
                String savePath = FileSystemConfig.getFileRootPath() + "chapterAttach/";

// 创建文件夹
                File dirFile = new File(savePath);
                if (!dirFile.exists()) {
                    dirFile.mkdirs();
                }
                //获取文件流
                MultiPartRequestWrapper multiWrapper = (MultiPartRequestWrapper) request;
                if (multiWrapper.hasErrors()) {
                    for (Iterator errorIter = multiWrapper.getErrors().iterator(); errorIter.hasNext(); ) {
                        String error = (String) errorIter.next();
                        LOG.error(error);
                    }
                }
                File file = null;
                Enumeration fileParameterNames = multiWrapper.getFileParameterNames();
                while (fileParameterNames != null && fileParameterNames.hasMoreElements()) {
                    String inputName = (String) fileParameterNames.nextElement();
                    String[] contentType = multiWrapper.getContentTypes(inputName);
                    if (contentType != null) {
                        String[] fileName = multiWrapper.getFileNames(inputName);
                        if (fileName != null) {
                            ret_fileName = fileName[0];
                            File[] files = multiWrapper.getFiles(inputName);
                            file = files[0];
                        }
                    }
                }
                stream = new FileInputStream(file);

//初始化文件名,并定义上传文件
                UUID uuid = UUID.randomUUID();
                String suffix = ret_fileName.substring(ret_fileName.lastIndexOf(".") + 1);
                uuid_fileName = uuid.toString() + "." + suffix;
                ret_filePath = savePath + "/" + uuid_fileName + ".temp";
                uploadedFile = new File(ret_filePath);
                FileUtils.saveFile(uploadedFile, stream);
            } catch (Exception e) {
                //读写错误异常处理
                result.put("message", e.getMessage());
                out.print(new JSONObject(result).toString());
                return;
            } finally {
                //资源关闭异常处理
                try {
                    if (stream != null) {
                        stream.close();
                    }
                } catch (Exception e) {
                    result.put("message", e.getMessage());
                    out.print(new JSONObject(result).toString());
                    return;
                }
            }
            result.put("message", "success");
            result.put("fileName", ret_fileName);
            result.put("filePath", "chapterAttach/" + uuid_fileName + ".temp");
            out.print(new JSONObject(result).toString());
        } finally {
            //将信息返回
            if (out != null) {
                out.flush();
                out.close();
            }
        }
    }

}

时间: 2024-10-06 14:42:57

struts利用插件jqueryupload上传文件,后台处理文件代码的相关文章

动态input file多文件上传到后台没反应的解决方法!!!

其实我也不太清除具体是什么原因,但是后面就可以了!!! 我用的是springMVC 自带的文件上传 1.首先肯定是要有springMVC上传文件的相关配置! 2.前端 这是动态input file上传到后台没反应的写法(页面上写死的上传到后台是可以的) 这段代码是写在table>>下的form表单里的 <input type="button" name="button" value="添加附件" onclick="ad

struts使用html:file上传文件的时候文件名乱码解决

<body> <html:form action="/jwid/struts1x/15.3/form/upload.do?action=upload" enctype="multipart/form-data"> 文件:<html:file property="file" style="width:200px;"></html:file><br> 备注:<htm

利用 secureCRT 直接上传下载文件 (sz,rz)

在window下向linux传送文件的方法. 首先在window中安装SecureCRT,然后在快速连接中建立一个到linux的连接,当然,你要先知道你的系统的ip,在终端中键入ifconfig可以查看到. 然后连接即可登陆到linux的终端下 要从linux传文件到window的话,这需要cd到你要传的文件的目录,然后用命令:sz 文件名即可上传.文件放在securesrt/download下面 要从window传送文件到linux,则在终端中输入rz,然后会出来一个对话框让你选择文件传送的.

开发者说:如何使用插件降低上传文件部署服务的复杂度

“ 这里描述我们实际服务部署的时候频繁发生的两个常用场景. 第一个场景,我们“办公网环境”想要在“准生产环境”下部署,需要做如下工作:打包.将文件上传到堡垒机上.scp将上传好的包裹传输到“准生产环境”的目标机器.ssh 目标机器.restart重启服务. 第二个场景是,我们可能随时的给“准生产环境”临时上传一些文件,但是仍然需要大量频繁操作. 直到前段时间我看了朋友圈一篇“阿里程序员推荐的15 款常用开发者工具”里面提到 Cloud Toolkit 这个工具,试过后觉得它太好用了,完美降低服务

小白向:web中利用request.getPart()上传文件到服务器

被文件上传弄得焦头烂额的一天,果然web中的路径和各种设置真的好讨厌= = 下面是超级小白的.及其简约的"详"解 1.明确目的: 用户将 1.txt 文件 上传到 服务器(web工程下的某个文件夹)中 2.明确过程 文件上传的过程涉及两个文件, 一个 .jsp文件,和 一个 servlet 文件. .jsp文件(upload.jsp):用户操作页面 =显示文件名的文本框+文件选择按钮(浏览...)+确认上传按钮 servlet文件(uploadServlet.java):根据.jsp中

Jenkins通过FTP上传站点太多文件导致太慢且不稳定,切换为压包上传再解压的思路(asp.net)

在本地先处理好要上传的站点文件之后,可能会因为一些网页切图导致ftp上传不稳定,中断,或者文件占用的问题. 那么换了一种实现思路,要借助jenkins的工具jenkins-cli.jar. 解决思路: 1.本地处理好奥上传的站点文件,通过压缩软件进行打包,其中压包的命名有规律,比如日期+BuildID的形式. 2.用FTP插件进行上传到外网的目录. 3.外网的机器上也同样安装Jenkins的环境,并新建好一个Job,这个Job增加参数化构建,参数为BuildID,然后增加批处理进行BuildID

实现TCP断点上传,后台C#服务实现接收

实现TCP断点上传,后台C#服务实现接收 终端实现大文件上传一直都是比较难的技术,其中涉及到后端与前端的交互,稳定性和流量大小,而且实现原理每个人都有自己的想法,后端主流用的比较多的是Http来实现,因为大多实现过断点下载.但稳定性不能保证,一旦断开,无法续传.所以得采用另一种流行的做法,TCP上传大文件. 网上查找了一些资料,大多数是断点下载,然后就是单独的C#端的上传接收,或是HTTP的,或是只有android端的,由于任务紧所以之前找的首选方案当然是Http先来实现文件上传,终端采用Pos

App上架流程[利用Archive进行上传]

作者 M_Lee2016.01.22 10:47 写了14852字,被32人关注,获得了49个喜欢 [iOS]App上架流程[利用Archive进行上传] 字数2186 阅读507 评论3 喜欢9 今天给大家带来项目如何上架的教程 准备: 1. 一个开发者账号(需要交过钱的,??好黑) 2. 一个做完的项目 检查: 1. 你的Xcode必须是正式版,不可以是beta版本(不能上传项目) 2. 请确认你的Xcode是从App Store或者从开发者网站下的Xcode安装,而不是非法获取的安装包,因

plupload批量上传分片(后台代码)

plupload批量上传分片功能, 对于文件比较大的情况下,plupload支持分片上传,后台代码如下: /** * * 方法:upLoadSpecialProgramPictrue * 方法说明:本地节目导入 * @return * @author wangHao * @throws Exception * @date 2015年6月9日 */ @RequestMapping("/localUpLoadProgram") @ResponseBody public void local