SmartUpload文件上传

一个简单的SmartUpload示例

 

使用SmartUpload使得文件上传异常简单,但同时有个问题,SmartUpload不支持本地文件校验,即不管目录是否存在,都会上传成功,如果给定目录不存在,SmartUpload在保存时,会创建一个新的文件(文件名即为给定路径的最后一个路径分隔符开始的字符串),这非常糟糕。

 

以下是SmartUpload上传的示例代码。

 

package com.zwh.smartupload;

import java.io.IOException;
import java.sql.SQLException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.jspsmart.upload.File;
import com.jspsmart.upload.Files;
import com.jspsmart.upload.SmartUpload;
import com.jspsmart.upload.SmartUploadException;

public class UploadServlet extends HttpServlet {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		
		//创建SmartUpload对象
		SmartUpload myupload = new SmartUpload();
		
		try {
			// 使用ServletConfig初始化SmartUpload对象
			myupload.initialize(this.getServletConfig(),req,resp);
			
			
			// 值得注意的是,如果设置了上传文件类型,如果上传的文件中有不允许的类型,SmartUpload会抛出异常
			// 设置允许上传的文件类型,格式:"jpg,jpeg,gif"
			myupload.setAllowedFilesList("");
			// 设置不允许上传的文件类型,格式:"exe,bat"
			myupload.setDeniedFilesList("");
			// 上传
			myupload.upload();
			
			// 使用SmartUpload上传时,必须从SmartUpload对象中获取的Request才能取得其它非文件类组件的值
			String newFileName = myupload.getRequest().getParameter("newFileName");
			String newDirectory = "d:\\";
			
			// 获取上传的文件列表对象 
			Files files = myupload.getFiles();
			
			int size = files.getCount();
			
			// 循环得到每个文件
			for(int i = 0;i<size;i++)
			{
				File f = files.getFile(i);
				// 判断文件路径是否存在。注意这里只能判断文件组件的值是否为空,而不是判断路径是否有效或本地文件是否存在 
				if(f.isMissing())
				{
					//
				}
				
				// 获取文件名 
				String fname = f.getFileName();
				// 获取文件绝对路径
				String fPath = f.getFilePathName();
				// 获取文件的扩展名 
				String fExt = f.getFileExt();
				
				// 保存文件 
				myupload.save(newDirectory, SmartUpload.SAVE_PHYSICAL);
				
				// 判断文件是否存在,并已上传文件名为新文件名 
				java.io.File file = new java.io.File(newDirectory + fname);
				
				if(file.exists())
				{
					file.renameTo(new java.io.File(newDirectory + newFileName));
				}
			}
		} catch (SQLException e) {
			e.printStackTrace();
		} catch (SmartUploadException e) {
			e.printStackTrace();
		}
		
	}

	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		this.doGet(req, resp);
	}

}

 

你可能感兴趣的:(sql,servlet,F#)