冲刺总结(finally)
冲刺总结(finally)
1.文件上传操作的具体实现
通过前端<input name="file" type="file" class="Style_upload" id="file">获取要传输的文件
当用户点击“上传”的button后,再通过编写的JS函数处理文件跳到相应的JSP处理文件中
upload.jsp(部分代码)
1 Date date = new Date(); 2 3 SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss"); 4 5 String DiskUrl = request.getSession().getServletContext().getRealPath("/"); 6 SmartUpload su = new SmartUpload(); 7 8 su.initialize(pageContext); 9 10 try{ 11 su.setMaxFileSize(1000*1024*5); 12 su.setTotalMaxFileSize(1000*1024*5); 13 14 15 su.upload(); 16 17 com.jspsmart.upload.File file = null; 18 19 String filename =""; 20 21 for (int i = 0; i < su.getFiles().getCount(); i++) { 22 23 24 file = su.getFiles().getFile(i); 25 26 filename = format.format(date)+"F"+"."+file.getFileExt(); 27 28 if (!file.isMissing()){ 29 file.saveAs(DiskUrl+"\\upload\\"+filename,su.SAVE_PHYSICAL);
文件的上传使用了smartupload组件包,smartupload是由www.jspsmart.com网站开发的一套上传组件包,可以轻松的实现文件的上传及下载功能,smartupload组件使用简单、可以轻松的实现上传文件类型的限制、也可以轻易的取得上传文件的名称、后缀、大小等。
文件上传步骤:
1.SmartUpload su = new SmartUpload(); //先用Smart初始化一个su对象用作文件的上传。
2.su.initialize(pageContext);//初始化上传操作。
3.su.setMaxFileSize(1000*1024*5); su.setTotalMaxFileSize(1000*1024*5); //设置上传文件的大小限制
4.su.upload(); //上传准备
5.filename = format.format(date)+"F"+"."+file.getFileExt(); //设置文件名和文件后缀。
6.file.saveAs(DiskUrl+"\\upload\\"+filename,su.SAVE_PHYSICAL); //文件存储到相应的路径
(PS:
文件存储函数介绍: file.saveAs(destFilePathName,option);
destPathName为文件保存目录,option为保存选项,它有三个值,
分别是SAVE_PHYSICAL,SAVE_VIRTUAL和 SAVE_AUTO。
SAVE_PHYSICAL指示组件将文件保存到以操作系统根目录为文件根目录的 目录下,
SAVE_VIRTUAL指示组件将文件保存到以Web工程根目录为文件根目录的目录下,
而SAVE_AUTO则表示由组件自动选择。
)
2.遇到的问题及解决:
问题:如何将文件存储到服务器的绝对路径上。
解决:通过ServletContext接口中的方法获取到tomcat下web项目的存储路径,再利用file.saveAs函数存储文件。
一个servlet可以使用getServletContext()方法得到web应用的servletContext,即而使用getServletContext的一些方法来获得一些值。
比如说getServletContext().getRealPath("/")来获得系统绝对路径,getServletContext().getResource("WEB-INF/config.xml")来获得xml文件的内容。
问题:代码运行后在项目的指定文件夹上找不到文件(与上个问题有关系)
解决:通过myeclipe导入文件项目且运行后,项目运行的主体是在myeclipse tomcat自带的webapp夹下,而不是本身部署项目的地方。