当选中一个文件后触发此事件,默认会创建一个6位的随机编号的元素,并加入到文件队列中,如果返回false则不会执行此动作。
此事件有三个参数:
event: javascript的event对象
queueID: 选中文件的编号
fileObj: 一个包含文件详细信息的对象。
name – 文件名称
size – 文件的大小(字节)
creationDate – 文件的创建时间
modificationDate – 文件的修改时间
type – 文件的扩展名(包括'.')
所以说你想得到客户端的路径这样是不行的!
上传文件时,我想获取客户端上传文件的原始路径。第一考虑,当然是使用js,例如网上可以找到的:function getPath(obj) { if (obj) { if (window.navigator.userAgent.indexOf("MSIE") >= 1) { obj.select()return document.selection.createRange().text} else if (window.navigator.userAgent.indexOf("Firefox") >= 1) { if (obj.files) { return obj.files.item(0).getAsDataURL()} return obj.value} return obj.value} } 但这样的代码在Ie下还是可行的,但在火狐下不兼容。所以又想通过servlet的第三方工具去做,例如FileUpload,本以为FileItem下的getName()方法能够得到全路径名,但结果仍然只得到文件名,很是杯具!求解决方法!?
引用至于你说的,不明白你的意思关键问题是我要获得这个路径,并且传递到后台!用js会有兼容性问题,如果用FileUpload上传,是否可以获得呢?我是没有得到的!!! 问题补充:zhanjia 写道上传文件一般用input标签,type为file,浏览选择文件后就是文件在本地的绝对路径了
引用至于你说的,不明白你的意思关键的问题是我要获得这个本地路径,并且传到后台!用js可以得到,但存在兼容性问题!?如果用FileUpload呢?我暂时还没有得到!!! 问题补充:zhanjia 写道网上的一些解决方案:
一般都是上传以后在数据库中保存上传后的文件路径,本地路径一般没意义
除非像上面所说的文件上传预览,还有那么点用处
我用来做数据接口的,我仅仅是把路径传给另一个系统,然后那个系统就可以从这个路径取文件了。
1首先是jsp<button class="btn button uploadAndNext" id="importWhiteBtn" type="button">
<span class="button">提交导入</span>
</button>
2.然后是js
$(function(){
var uploadCom = null
function uploadIt() {
$("#importWhiteBtn").click(function() {
var uploadId = "#" + $(this).attr("id")
var btn = $(this)
uploadCom = new AjaxUpload( uploadId + "" , {
action : "whitePhoneNumber.do?action=importFile",
onSubmit: function(file, ext) {
if ((ext &&/^(txt)$/.test(ext))) {
alert("请先下载导入模板readme.txt参考,您上传的文档格式不对,请重新选择!")
return false
}
$.blockUI({
message:"正在上传到服务器...."
})
},
onComplete: function(file, response) {
$.unblockUI()
if(response=="success"){
alert( "导入成功")
$('#whitePhoneList').flexReload()
}else{
alert( "导入失败,"+response)
}
}
})
})
$(".uploadAndNext").click()
}
uploadIt()
firstClick = false
})
3.最后是action
public ActionForward importFile(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) throws Exception{
FileItemFactory factory = new DiskFileItemFactory()
ServletFileUpload upload = new ServletFileUpload(factory)
String success = "success"
BufferedReader br=null
InputStream in=null
String operator = UserNameUtil.getUserName(request)
String areaCode = whitePhoneManager.getAreaCodeByOperator(operator)
try {
List<FileItem>list = upload.parseRequest(request)
for (int i = 0i <list.size()i++) {
FileItem fileItem = list.get(i)
String name = fileItem.getName().substring(
fileItem.getName().lastIndexOf("\\") + 1)
if(fileItem.getSize() >2097152){//200k
throw new Exception(" 文件大小超过2M")
}
log.debug("upload file name:" + name)
in= fileItem.getInputStream()
br = new BufferedReader(new InputStreamReader(in))
whitePhoneManager.processFile(br,areaCode)
logutil.log_Operation(request, LogUtil.LOG_MODULE_SYSTEMCONFIG,
LogUtil.LOG_EVENT_CREATE, "批量导入短信白名单", "filename: "
+ name, "成功",
LogUtil.SUCCESS)
}
} catch (FileUploadException e) {
log.debug("error", e)
success=e.getMessage()
} catch (Exception e) {
log.debug("error", e)
success=e.getMessage()
}finally{
if(br!=null) try{br.close()}catch(Exception e){log.error("unable to close bufferdreader",e)}
if(in!=null) try{in.close()}catch(Exception e){log.error("unable to close inputstream",e)}
response.setContentType("text/html")
response.setCharacterEncoding("UTF-8")
response.getWriter().write( success )
return null
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)