当前位置: 代码迷 >> Web前端 >> 文件下传步骤
  详细解决方案

文件下传步骤

热度:308   发布时间:2012-11-08 08:48:11.0
文件上传步骤

文件上传的简单方法:(原理性的实验)

1.??<body>

???? <form?action="upload"?name="newForm"?enctype="multipart/form-data"?method="post">

(必须这么写。必须用Post方式提交。

application/x-www-form-urlencoded:?窗体数据被编码为名称/值对。这是标准的编码格式。?

multipart/form-data:?窗体数据被编码为一条消息,页上的每个控件对应消息中的一个部分。?

text/plain:窗体数据以纯文本形式进行编码,其中不含任何控件或格式字符。)

????

(设定文件域名和名字)

附件:<input?type="file"?name="file1"/>

???? <input?type="submit"?name="submit"?value="submit"/>

???? </form>

? ?</body>

2.? public?void?doPost(HttpServletRequest?request,?HttpServletResponse?response)

throws?ServletException,?IOException?{

InputStream?is?=?request.getInputStream();????//获得request的输入流

FileOutputStream?fos?=?new?FileOutputStream(new?File("d:/testUpload.jpg"));???

(输入流和输出流内容copy)

byte[]?b?=?new?byte[1024];

while(is.read(b)!=-1){

fos.write(b);

}

(一定要记得关闭打开的流资源。)

is.close();

fos.close();

}

使用commons-fileupload组件实现的基本上传

1.?jar包:commons-fileupload.jar,??commons-io.jar?

2.?JSP页面中增加form:

???<form?enctype="multipart/form-data"??method="post"?action="uploadVideo">//必须!

??? <input?type="file"?name="file1"/>

??? <input?type="submit"?name="submit1"?value="提交"/>

</form>

3.?增加servlet:

public?void?doPost(HttpServletRequest?request,?HttpServletResponse?response)

throws?ServletException,?IOException?{

String?tempDirectory?=?"d:/temp/";????//要在最后加上斜杠:temp/???临时文件夹?上传成功之前存放缓存的位置

String?fileDirectory?=?"d:/video/";????//要在最后加上斜杠:temp/??上传成功后的文件所放的目录?

try?{

int?sizeThreshold?=?1024?*?64;??//写满该大小的缓存后,存入硬盘中。

File?repositoryFile?=?new?File(tempDirectory);//将未完全上传成功的信息放到指定的临时文件夹

FileItemFactory?factory?=?new?DiskFileItemFactory(sizeThreshold,?repositoryFile);

ServletFileUpload?upload?=?new?ServletFileUpload(factory);

upload.setSizeMax(500?*?1024?*?1024);?//?set?every?upload?file'size?less?than?500M

List?items?=?upload.parseRequest(request);???//这里开始执行上传

Iterator?iter?=?items.iterator();

while?(iter.hasNext())?{

FileItem?item?=?(FileItem)?iter.next();???//FileItem就是表示一个表单域。

if(item.isFormField()){?//isFormField方法用于判断FileItem是否代表一个普通表单域(即非file表单域)

System.out.println("***"+item.getFieldName());

}else?{

// String?fieldName?=?item.getFieldName();??//获取表单域name属性的值

// String?fileName?=?item.getName();?????//返回该文件在客户机上的文件名。e.g:?e:\dianying\\video\1.wmv

// System.out.println("*****"+fieldName);

// System.out.println("*****"+fileName);

//?????????????????????String?lastpath?=?item.getName();

//?????????????????????lastpath?=?lastpath.substring(lastpath.lastIndexOf(.));

File?uploadedFile?=?new?File(fileDirectory?+new?Date().getTime()+lastpath);

//?????????????????????String?filename?=?UUID.randomUUID().tostring().replace(-,””)?+?lastpath;

//?????????????????????File?uploadedFile?=?new?File(fileDirectory?+?filename);

item.write(uploadedFile);

}

}

}?catch?(Exception?e)?{

e.printStackTrace();

}

}

<!--EndFragment-->
  相关解决方案