
action中得到form的file的完整路径:
Object fileNames = thisgetFormValue("file");
File file = ((File[]) fileNames)[0];
js中得到文件完整路径:
$("file")value
------解决方案--------------------
final long MAX_SIZE = 1 1024 1024;// 设置上传文件最大为 1M
// 允许上传的文件格式的列表
final String[] allowedExt = new String[] { "jpg", "jpeg", "gif", "bmp","png"};
// List ipt=new ArrayList();
// 实例化一个硬盘文件工厂,用来配置上传组件ServletFileUpload
DiskFileItemFactory dfif = new DiskFileItemFactory();
dfifsetSizeThreshold(4096);// 设置上传文件时用于临时存放文件的内存大小,这里是4K多于的部分将临时存在硬盘
dfifsetRepository(new File(requestgetRealPath("/") + "temp"));// 设置存放临时文件的目录,web根目录下的ImagesUploadTemp目录
// 用以上工厂实例化上传组件
ServletFileUpload sfu = new ServletFileUpload(dfif);
// 设置最大上传尺寸
sfusetSizeMax(MAX_SIZE);
PrintWriter out = responsegetWriter();
// 从request得到 所有 上传域的列表
List fileList = null;
try {undefined
Systemoutprintln("&&&&");
fileList = sfuparseRequest(request);
} catch (FileUploadException e) {// 处理文件尺寸过大异常
if (e instanceof SizeLimitExceededException) {undefined
outprintln("");
}
eprintStackTrace();
}
// 没有文件上传
if (fileList == null || fileListsize() == 0) {undefined
outprintln("");
}
// 得到所有上传的文件
Iterator fileItr = fileListiterator();
// 循环处理所有文件
while (fileItrhasNext()) {undefined
FileItem fileItem = null;
String path = null;
long size = 0;
// 得到当前文件
fileItem = (FileItem) fileItrnext();
// 忽略简单form字段而不是上传域的文件域(等)
if (fileItem == null || fileItemisFormField()||fileItemgetSize()==0) {undefined
continue;
}
// 得到文件的完整路径
path = fileItemgetName();
Systemoutprintln("完整路径文件名:"+path);
// 得到文件的大小
size = fileItemgetSize();
if (""equals(path) || size == 0) {undefined
outprintln("");
}
// 得到去除路径的文件名
String t_name = pathsubstring(pathlastIndexOf("\\") + 1);
// 得到文件的扩展名(无扩展名时将得到全名)
String t_ext = t_namesubstring(t_namelastIndexOf("") + 1);
// 拒绝接受规定文件格式之外的文件类型
int allowFlag = 0;
int allowedExtCount = allowedExtlength;
for (; allowFlag < allowedExtCount; allowFlag++) {undefined
if (allowedExt[allowFlag]equals(t_ext))
break;
}
if (allowFlag == allowedExtCount) {undefined
outprintln("请上传以下类型的文件
for (allowFlag = 0; allowFlag < allowedExtCount; allowFlag++)
outprintln("" + allowedExt[allowFlag]
+ " ");
outprintln("");
}
double now = Mathrandom()1000000;
// 根据系统时间生成上传后保存的文件名
String prefix = StringvalueOf(now);
// 保存的最终文件完整路径,保存在web根目录下的ImagesUploaded目录下
String u_name = requestgetRealPath("/") + "ImagesUploaded/"
+ prefix + "" + t_ext;
即是FileUploadException与SizeLimitExceededException不能嵌套出现,改成如下即可:
try{
//从请求中取出所有表单域对象
filelist = sfuparseRequest(request);
}catch(SizeLimitExceededException e){
flag = 1;
return flag;
}catch(FileUploadException e){
flag=2;
return flag;
}
public void doPost(>
<input type="text" size="4" value="10" name="fileSizeLimit" id="fileSizeLimit"/> K
<input type="file" name="file1" id="file1" size="40" onchange="changeSrc(this)"/>
<img src="about:blank" id="fileChecker" alt="test" height="18"/>
//前面为网页
<script type="text/javascript">
var oFileChecker = documentgetElementById("fileChecker");
function changeSrc(filePicker)
{
oFileCheckersrc = filePickervalue;//读
}
//这个很重要,判断是否完全读完,否则判断大小不准确
oFileCheckeronreadystatechange = function ()
{
if (oFileCheckerreadyState == "complete")
{
checkSize();
}
}
function checkSize()
{
var limit = documentgetElementById("fileSizeLimit")value 1024;
if (oFileCheckerfileSize > limit)
{
alert("too large");
}
else
{
alert("ok");
}
}
</script>
以上就是关于java文件上传下载用哪种技术好全部的内容,包括:java文件上传下载用哪种技术好、前端使用form表单提交图片后,java后台怎么获取该图片、html div怎么摸你文件域等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)