关于基础的上传下载和JAVA邮件的发送等一些小问题

这个是一个上传的小实例

首先是完成一个小小的jsp页面

表单是包含一个用户名字段,以及一个文件字段   注意的要点就是   enctype="multipart/form-data"

Servlet保存上传的文件到uploads目录,显示用户名,文件名,文件大小,文件类型。

这个是第一步

<form action="${pageContext.request.contextPath}/FileUploadServlet"        method="post"
      enctype="multipart/form-data">
    用户名:<input type="text" name="username" /> </br>
    文件:<input type="file" name="fileOne" /> </br>
    <input type="submit" value="提交" />
</form>

这个是第二步

public void doPost(HttpServletRequest request , HttpServletResponse response  )throws ServletException ,IOException{
//通过response打印,所以需要设置他的编码
response.setContentType("text/html","charset=utf-8");
//创建工厂
DiskFileItemFactory dfif = new DiskFileItemFactory();
//使用工厂解析器解析对象
ServletFileUpload fileUpload = new ServletFileUpload(dfif);
try{
//使用解析器对象解析request,得到FileItem列表
List<FileItem> list = fileUpload.parseRequest(request);
//遍历所有表单
for(FileItem fileItem : list){
//如果当前表单项为普通表单
if(fileItem.isFormFiled()){
String fieldname = fileItem.getFiledName();
if(fieldname.equal("username")){
//打印当前表单内容,就是用户在username表单项中输入的内容
response.getWrite().print("用户名"+fileItem.getString()+"</br>");

}
}else{
//如果当前表单项不是普通表单项,说明是文件字段
String name = fileItem.getName(); //获取上传文件的名称
if(name ==null || name.isEmpty()){
continue ;
}
//获取真实路径,对应${项目目录}/upload,当然这个目录必须存在
String savePath = this.getServletContext().getRealPath("/upload");
//通过upload目录和文件名称来常见File对象
File file = new File(savePath , name);
//把文件上传保存到指定位置
file.write(file);
//打印上传文件名称
response.getWriter().print("上传的文件名"+ fileItem.getName + "</br>");
//打印上传文件大小
response.getWriter().print("上传的文件大小"+fileItem.getSize()+"</br>");
//打印上传文件的类型
respinse.getWriter().print("上传的文件类型"+fileItem.getContentType()+"</br>");
}

}catch(Exception e){

throw new ServletException(e)

}

}

  

  

  

//注意一下要点

/*
如果没有把用户上传的文件存放到 WEB-INF目录下,那么用户就可以通过浏览器直接访问,有危险
通常我们会在web-INF目录下创建一个upload目录存放上传文件,而在servlet中找到这个目录
需要使用servletContext的getRealPath(String)方法;

例如我在项目lol中有这条语句:
ServletContext servletContext = request.getSession().getServletContext();
String savePath = this.servletContext.getRealPath("/web-inf/uploads");
其中这个savePath的路径就是:
F:\tomcat6_1\webapps\lol\WEB-INF\uploads

但是IE6会返回上传路径的完整路径,不过无论是否是完整路径,我们都会截取最后一个\\
String name = fileFileItem.getName();
int lastname = name.lastIndexOf("\\");
if(lastIndex != -1){
name = name.subString(lastIndex + 1);
}
response.getWriter.print(name);
*/

但是IE6会返回上传路径的完整路径,不过无论是否是完整路径,我们都会截取最后一个\\
String name = fileFileItem.getName();
int lastname = name.lastIndexOf("\\");
if(lastIndex != -1){
name = name.subString(lastIndex + 1);
}
response.getWriter.print(name);

==========================================================================

下面是关于java邮箱发送的一些要点

javaMail中主要的类有三个
javax.mail.session;
javax.mail.internet.MimeMessage;
javax.mail.Transport;

session:表示会话,就是客户端和邮件服务器之间的会话,想获得会话需要给出账号和密码;
当然还要给出服务器名称,邮件服务中的session对象,就相当于会话需要给出的connection对象;

MimeMessage:表示邮件类,是Message的子类,包含邮件的主题,内容,收件人,地址,发件人等,
还可以设置抄送和暗送,甚至可以设置附件

Transport:用来发送邮件,他是发送器
*/

//第一步是获得session
Session session = Session.getInstance(Properties prop ,Authenticator auth) ;
// prop需要指定的两个键值,一个是指定服务器主机名,另一个是需要认证的
Properties prop = new Properties();
prop.setProperty("mail.host","smtp.163.com"); //设置服务器主机名
prop.setProperty("mail.smtp.auth","true") ; //设置需要认证

//其中 Authenticator是一个接口表示认证器,就是校验客户端身份,
//我们需要自己来实现这个接口,实现这个接口需要使用账户和密码
Authenticator auth = new Authenticator(){
public PasswordAuthentication getPasswordAuthentication(){
new PasswordAuthentication("","") ; //设置用户名和密码
}
}

//通过上面的准备,现在就可以获取Session对象了
Session session = Session.getInstance(prop,auth);

// 第二部就是创建MimeMessage 对象,创建MimeMessage对象需要Session对象来创建
MimeMessage msg = new MimeMessage(session);
然后需要设置发信人地址,收信人地址、主题以及邮件正文

//第三部就是发送邮件
Transport.send(msg);

//javaMail 发送带有附件的邮件
/*
一封邮件可以包含正问呢,附件N个,如果想发送带有附件邮件,需要设置邮件内容 MimeMultiPart
*/
MimeMulitpart parts = new MimeMulitpart(); //多个部件对象,可以理解为部件的集合

MimeBodyPart part1 = new MimeBodyPart();//创建一个部件
part1.setCotnent(“这是正文部分”, “text/html;charset=utf-8”);//给部件设置内容
parts.addBodyPart(part1);//把部件添加到部件集中。

下面我们创建一个附件:
MimeBodyPart part2 = new MimeBodyPart();//创建一个部件
part2.attachFile(“F:\\a.jpg”);//设置附件
part2.setFileName(“hello.jpg”);//设置附件名称
parts.addBodyPart(part2);//把附件添加到部件集中

注意,如果在设置文件名称时,文件名称中包含了中文的话,那么需要使用MimeUitlity类来给中文编码:
part2.setFileName(MimeUitlity.encodeText(“美女.jpg”));

时间: 2024-11-06 05:47:49

关于基础的上传下载和JAVA邮件的发送等一些小问题的相关文章

java ftp 上传下载工具类

1 package com.mohecun.utils; 2 3 import java.io.File; 4 import java.io.FileInputStream; 5 import java.io.FileNotFoundException; 6 import java.io.FileOutputStream; 7 import java.io.IOException; 8 import java.io.InputStream; 9 import java.io.OutputStre

Java Web(十二) commons-fileupload上传下载

今天心态正常...继续努力.. --WH 一.上传原理和代码分析. 上传:我们把需要上传的资源,发送给服务器,在服务器上保存下来. 下载:下载某一个资源时,将服务器上的该资源发送给浏览器. 难点:服务器端获取资源时比较麻烦, 浏览器端 注意:enctype=multipart/form-data:该属性表明发送的请求体的内容是多表单元素的,通俗点讲,就是有各种各样的数据,可能有二进制数据,也可能有表单数据,等等,所以使用该属性也进行其区分,发送的格式如下(使用火狐中的Firebug插件进行捕捉的

java web 文件上传下载

文件上传下载案例: 首先是此案例工程的目录结构: 处理上传: FileUploadServlet.java 1 package fnz.fileUploadTest; 2 3 import java.io.File; 4 import java.io.IOException; 5 import java.io.InputStream; 6 import java.io.PrintWriter; 7 import java.text.SimpleDateFormat; 8 import java.

Java Sftp上传下载文件

需要使用jar包  jsch-0.1.50.jar sftp上传下载实现类 package com.bstek.transit.sftp; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import co

JAVA中使用FTPClient实现文件上传下载

在JAVA程序中,经常需要和FTP打交道,比如向FTP服务器上传文件.下载文件,本文简单介绍如何利用jakarta commons中的FTPClient(在commons-net包中)实现上传下载文件. 一.上传文件 原理就不介绍了,大家直接看代码吧 /** * Description: 向FTP服务器上传文件 * @Version1.0 Jul 27, 2008 4:31:09 PM by 崔红保([email protected])创建 * @param url FTP服务器hostname

Java通过FTP服务器上传下载文件的解决方案

对于使用文件进行交换数据的应用来说,使用FTP 服务器是一个很不错的解决方案.本文使用Apache Jakarta Commons Net(commons-net-3.3.jar)基于FileZilla Server服务器实现FTP服务器上文件的上传/下载/删除等操作. 关于FileZilla Server服务器的详细搭建配置过程,详情请见FileZilla Server安装配置教程.之前有朋友说,上传大文件(几百M以上的文件)到FTP服务器时会重现无法重命名的问题,但本人亲测上传2G的文件到F

28、java文件上传下载、邮件收发

文件上传下载 前台: 1. 提交方式:post 2. 表单中有文件上传的表单项: <input type="file" /> 3. 指定表单类型: 默认类型:enctype="application/x-www-form-urlencoded" 文件上传类型:multipart/form-data FileUpload 文件上传功能开发中比较常用,apache也提供了文件上传组件! FileUpload组件: 1. 下载源码 2. 项目中引入jar文件

Java FTPClient实现文件上传下载

在JAVA程序中,经常需要和FTP打交道,比如向FTP服务器上传文件.下载文件,本文简单介绍如何利用jakarta commons中的FTPClient(在commons-net包中)实现上传下载文件.所用到的jar包有:  commons-net-1.4.1.jar  jakarta-oro.jar 一.上传文件 文件上传源代码 文件上传源代码    /**   * Description: 向FTP服务器上传文件   * @Version1.0   * @param url FTP服务器ho

简单的FTP上传下载(java实现)

/** *阅读前请自己在win7上建立FTP主机 *具体步骤如:http://jingyan.baidu.com/article/574c5219d466c36c8d9dc138.html * 然后将以下FTP,username,password分别改成你的FTP ip地址 用户名 密码即可 * 本例子用了apche的commons-net-3.3.jar以方便FTP的访问 请手动buid -path * 待完成版 刷新按钮 登录 都还没有做 而且上传 下载 完成后都需要重新运行 * 2014-