Ftp文件接收

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

request.setCharacterEncoding("utf-8");
News news = new News();
try {
// 实例化一个硬盘文件工厂,用来配置上传组件ServletFileUpload
DiskFileItemFactory factory = new DiskFileItemFactory();
factory.setSizeThreshold(4096); // 设置缓冲区大小,这里是4kb
// 用以上工厂实例化上传组件
ServletFileUpload upload = new ServletFileUpload(factory);
upload.setSizeMax(4194304); // 设置最大文件尺寸,这里是4MB
// 设置上传的地址
String uploadPath = this.getServletContext().getRealPath(
"/upload/images");
System.out.println("uploadPath=====" + uploadPath);
List items = upload.parseRequest(request);// 得到所有的上传文件
Iterator it = items.iterator();
// 逐条处理
while (it.hasNext()) {
// 得到当前文件
FileItem fi = (FileItem) it.next();
// 检查当前项目是普通表单项目还是上传文件
if (fi.isFormField()) {// 如果是普通表单项目,显示表单内容。
request.setCharacterEncoding("utf-8");
if ("title".equals(fi.getFieldName())) {
news.setTitle(fi.getString("utf-8"));
System.out.println(fi.getString("utf-8"));
} else if ("time".equals(fi.getFieldName())) {
news.setTime(fi.getString("utf-8"));
System.out.println(fi.getString("utf-8"));
} else if ("focus".equals(fi.getFieldName())) {
int focus = 0;
if ("on".equals(fi.getString("utf-8"))) {
focus = 1;
}
news.setFocus(focus);
System.out.println(focus);
}
} else {

// 得到文件的完整路径
Format format = new SimpleDateFormat("yyyyMMdd_HHmmss");
Date date = new Date();
String path = fi.getName();
// 得到去除路径的文件名
String filename = path
.substring(stIndexOf("\\") + 1);
//为了避免下载文件时出现中文传输参数乱码,故将文件存储名设置为年月日+加时分秒+3位随机数,当上传一个文件时完全可以不使用随机数,
String type = null;
if (!"".equals(filename) && filename != null) {//也可以添加判断条件:&&fi.getSize()!=0

int b = (int) (Math.random() * 1000);
type = filename.substring(filename.length() - 4,
filename.length());
filename = format.format(date) + b + type;

System.out.println(filename);
// 将文件保存在Web目录的upload文件夹中
if ("pic_1".equals(fi.getFieldName())) {
news.setPic_1(fi.getName());
news.setPic_1path(filename);//path为文件名被重新定义后的名称,需要被存入数据库中
System.out.println("11111" + fi.getName());
}
if ("pic_2".equals(fi.getFieldName())) {
news.setPic_2(fi.getName());
news.setPic_2path(filename);
System.out.println("22222" + fi.getName());
}
if ("pic_3".equals(fi.getFieldName())) {
news.setPic_3(fi.getName());
news.setPic_3path(filename);
System.out.println("33333" + fi.getName());
}
fi.write(new File(uploadPath, filename));
}}
}
News.addNews(news);//此处为javabean中定义的添加记录的方法,用于将信息存入数据库
} catch (FileUploadException e) {
e.printStackTrace();

} catch (Exception e) {
e.printStackTrace();
}
request.getRequestDispatcher("QueryNewsByConditionServlet.do").forward(
request, response);

相关文档
最新文档