java上传文件按钮_java文件上传

技术架构: Struts2 + JSP + jQuery

341218b39f22ed39d39a37b009012c5f.png

普通标签上传文件

页面标签

上传附件:

前端js

functionsavaData(labelId) {

//调用文件上传的JS方法var result =ajaxFileUpload(labelId, 30*1024*1024);if(result == 'false') {//返回false, 上传失败

return false;

}else{

alert(result.fileName);//原文件名

alert(result.fileNewName); //新文件名

alert(result.filePath); //上传到磁盘路径

return false;

}

}/**

* 上传文件

* labelId: 上传控件的Id

* fileSizeLimit: 上传大小限制(字节)*/

functionajaxFileUpload(labelId, fileSizeLimit) {//获取到文件对象

var file = $("#"+labelId)[0].files[0];

result= "false";if(null !=file) {var byteSize =file.size;if (byteSize >fileSizeLimit) {

alert("上传文件大小不能超过"+fileSizeLimit/1024/1024+"MB!");

return "false";

}var data = newFormData();

data.append("file", file);

data.append("filename", file.name);

$.ajax({

url :"uploadFile.action",

type :"POST",

async :false,

cache :false,

processData :false,//告诉jQuery不要去处理发送的数据

contentType : false,

data : data,

complete:function(XMLHttpRequest,textStatus){if(textStatus=='timeout'){var xmlhttp = window.XMLHttpRequest ? new window.XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHttp");

xmlhttp.abort();

alert("网络超时");

return "false";

}

},

success :function(data) {if(data.isOk) {//data={"isOk":"true/false", "fileName":"原文件名", "fileNewName":"新文件名", "filePath":"上传到磁盘路径"}

result =data;

}else{

alert(data.info);

return "false";

}

},

error :function(err) {

fileUploadFalg= false;

alert(err);

return "false";

},

});

}returnresult;

}

后台Java代码

importorg.apache.commons.io.FileUtils;importorg.apache.commons.io.FilenameUtils;//用于返回json(setter/getter)

private Map validateExists = new HashMap();//文件上传(setter/getter)

privateFile file;privateString fileName;

@Action(value= "uploadFile", interceptorRefs ={

@InterceptorRef(value= "fileUpload", params={"maximumSize", "314572800"}),

@InterceptorRef(value= "basicStack")

},

results={

@Result(name= "success", type = "json", params= {"root","validateExists"}) })publicString uploadFile(){//通过config.properties配置一个文件存放路径, 如D:/upload/jrzx/

String filePath = FilePathUtil.FILE_ROOT + FilePathUtil.SEPARATOR + Config.getProperty("file.jrzx.logo") +FilePathUtil.SEPARATOR;try{

String storageFileName=generateFileName(fileName);if (null !=file) {if (314572800 < file.length()) { //大小不能超过300M

validateExists.put("isOk", false);

validateExists.put("info", "文件大小不能超过300M");

}else{

File path= new File(filePath +storageFileName);if(path.exists()) {

FileUtils.deleteQuietly(path);

}

FileUtils.moveFile(file, path);

validateExists.put("fileName", fileName);

validateExists.put("fileNewName", storageFileName);

validateExists.put("filePath",FilePathUtil.getVirtualPathBya( filePath +storageFileName));

validateExists.put("isOk", true);

validateExists.put("info", "上传成功");

}

}else{

validateExists.put("isOk", false);

validateExists.put("info", "请选择正确的文件格式和文件大小");

}

}catch(Exception e) {

e.printStackTrace();

StringWriter sw= newStringWriter();

PrintWriter pw= newPrintWriter(sw);

e.printStackTrace(pw);

log.error(sw.toString());

validateExists.put("isOk", false);

validateExists.put("info", "系统异常,请稍候重试!");

}returnSUCCESS;

}privateString generateFileName(String fileName) {

String newFileName= new SimpleDateFormat("yyyyMMddHHmmssSSS").format(new Date()) + (int)(Math.random()*9000+1000);

String prefix=FilenameUtils.getExtension(fileName);if (!Tool.isEmpty(prefix)) {

newFileName+= "." +prefix;

}returnnewFileName;

}

将上传控件修改为按钮(可以方便的修改样式)

下面这种方式应该也适合用"点击图片上传文件", 暂未尝试, 应该没问题

页面标签

上传附件:

${news.fileName}

未选择任何文件

}#uploadFile{position:absolute;left:0;top:0;opacity:0;

}

前端js

//当附件信息变更时的操作

function fileChange(defaultMsg) {

var uploadFilename = $("#uploadFile").val();

if(isEmpty(uploadFilename)) {

$("#uploadFileBtnText").html(defaultMsg);

$("#newsForm_news_fileName").val("")

}else {

var arr = uploadFilename.split("\\");

$("#uploadFileBtnText").html(arr[arr.length-1]);

$("#newsForm_news_fileName").val(arr[arr.length-1])

}

}

function deleteUploadFile(defaultMsg) {

if(isEmpty($("#newsForm_news_fileName").val())){

alert("不存在需要删除的附件!");

return false;

}

if(confirm("你确定删除附件吗?\n\n删除附件需要提交后才能生效!")){

$("#uploadFileBtnText").html(defaultMsg);

$("#newsForm_news_fileName").val("")

return false;

}

}

function saveNews(){

if(confirm("你确定提交吗?") && checkForm()){

var hasFile = $("#uploadFileBtnText").html();

var filePath = $("#newsForm_news_filePath").val();

var fileName = $("#newsForm_news_fileName").val();

var fileOldName = $("#newsForm_news_fileOldName").val();

//只要存在数据, 那就上传数据(因为即使文件名相同, 内容可能变更了), 然后后台再删除旧的数据

var result = "false"; var labelId = "uploadFile"; var fileSizeLimit = 999*1024*1024;

if( !isEmpty(fileName) && !isEmpty($("#"+labelId)[0].files[0])) {

result = ajaxFileUpload(labelId, fileSizeLimit); //上传文件

}else { //不存在数据, 不需要上传

result = {"filePath":"", "fileName":""};

}

//alert($("#uploadFileBtnText").html());

if(result != 'false') {//如果返回false

//alert("上传文件成功");

//alert(result.fileName); //原文件名

//alert(result.fileNewName); //新文件名

//alert(result.filePath); //上传到磁盘路径

//将当前的附件信息设置到隐藏域

$("#newsForm_news_filePath").val(result.filePath);

$("#newsForm_news_fileName").val(result.fileName);

//提交表单,保存数据

var rebutUrl = "saveNewsOfCs.action";

//$("#domains").val(getSelectTree("showDomains"))

$("#newsForm").attr("action", rebutUrl).submit();

return true;

}else {

return false;

}

}else{

return false;

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值