文件上传步骤

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

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-->
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值