上传下载之文件上传

先讲讲大致流程:

1、前台通过文件选择框选择文件提交后,通过action跳转到后端;

大致代码: 

//前台的代码先不去深究,毕竟水平精力有限;只指出关键的几个数据如:groupid,fileFileName,file,uploadType,clientkey等,其中涉及到上传人的身份,所在位置,上传文件类型,文件名,文件实体;

$(".addBTN").click(function(){
                    Added('新增文件','AddApp.jsp',function(){
                        var groupid = <%=session.getAttribute(Context.GROUPID)%>;//群组id
                        var fileFileName = $(window.frames["AddedName"].document).find(".fileFileName").val();//文件名
                        var file = $(window.frames["AddedName"].document).find(".file").val();//文件路径
                        var uploadType = $(window.frames["AddedName"].document).find(".uploadType").val();//文件类型
                        var clientkey=<%=session.getAttribute("clientkey")%>;
                        insertfile(groupid,fileFileName,file,uploadType);
                    });
                });

function insertfile(groupid,fileFileName,file,uploadType) {
                     //alert("上传");
                     var optionss = {
                        url : "<%=basePath%>/actions/uploadShareFile.action",
                        data:{"groupid":groupid,"file":file,"uploadType":uploadType},
                        type : "post",
                        dataType : "json",
                        success : function(data) {
                            alert("上传成功");
                            /* if (data.result) {
                                parent.toast(data.message);
                                location=location;
                            } else {
                                parent.toast(data.message);
                            } */
                        },
                        error : function(data) {
                            parent.toast('提示', "系统连接超时!");
                            return;
                        }
                    }
                     windialog=$(window.frames["AddedName"].document).find(".jvForms").ajaxSubmit(optionss);
                     return; 
                 
               } 

2、后端的action方法对提交的数据进行处理

private class UploadShareFile extends DefaultActionSupport{

    private String fileFileName;// 文件名
    private String groupid;// 组ID
    private String uploadType;// 上传文件类型
    private File file;

......一系列get和set

@Override
    public String execute() {
        // 生成一个文件Id
        String fid = UUID.randomUUID().toString();
        ShareFilesResult result = new ShareFilesResult();
        // 生成文件目录
        File base = FileHelper.getGlobalFileBase("groupshareCache/");
        try {
            String path = new File(base, fid).toPath().toString();
            System.out.println(path);
            FileHelper.copyFile(file, new File(base, fid), false);
        } catch (IOException e) {
            log.log(Level.WARNING, "上传群组文件异常", e);
            try {
                response.sendError(HttpServletResponse.SC_UNAUTHORIZED);
            } catch (IOException e1) {
            }
            return null;
        }
        ShareFile sf = new ShareFile();
        sf.setCreateTime(System.currentTimeMillis());
        switch (uploadType) {
        case 0:
            System.out.println("临时文件");
            sf.setDeadlineTime(0);
            break;
        case 1:
            System.out.println("永久文件");
            sf.setDeadlineTime(0);
            break;
        default:
            System.out.println("临时文件");
            sf.setDeadlineTime(0);
            break;
        }
        sf.setDownTimes(0);
        sf.setFid(fid);
        sf.setFileName(fileFileName);
        sf.setFileSize(file.length());
        //测试数据--组名
        sf.setGroupid("xw");
        //测试数据--人名
        sf.setUploader("xw");
        sf.setUploaderName("xw");
        sf.setPfid(pfid);
        GroupShareDB.addShareFile(sf);
        result.setMessage("上传成功!");
        result.setResult(true);
        JsonUtil.responseOutWithJson(response, result);
        return null;
    }

}

工具类FileHelper中的getGlobalFileBase

public static File getGlobalFileBase(String child)
    {
        File base = new File(GLOBALFILE, child);
        if(!base.exists())
            base.mkdirs();
        return base;
    }

OK,上传工作大致已经完成,由于刚进公司,部分数据还无法得知来源,暂且如此吧!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值