您的位置:

java模拟上传附件,java附件上传下载

本文目录一览:

java怎么实现上传附件的功能

上传附件,实际上就是将文件存储到远程服务器,进行临时存储。举例:

**

* 上传文件

*

* @param fileName

* @param plainFilePath 文件路径路径

* @param filepath

* @return

* @throws Exception

*/

public static String fileUploadByFtp(String plainFilePath, String fileName, String filepath) throws Exception {

FileInputStream fis = null;

ByteArrayOutputStream bos = null;

FTPClient ftpClient = new FTPClient();

String bl = "false";

try {

fis = new FileInputStream(plainFilePath);

bos = new ByteArrayOutputStream(fis.available());

byte[] buffer = new byte[1024];

int count = 0;

while ((count = fis.read(buffer)) != -1) {

bos.write(buffer, 0, count);

}

bos.flush();

Log.info("加密上传文件开始");

Log.info("连接远程上传服务器"+CCFCCBUtil.CCFCCBHOSTNAME+":"+22);

ftpClient.connect(CCFCCBUtil.CCFCCBHOSTNAME, 22);

ftpClient.login(CCFCCBUtil.CCFCCBLOGINNAME, CCFCCBUtil.CCFCCBLOGINPASSWORD);

FTPFile[] fs;

fs = ftpClient.listFiles();

for (FTPFile ff : fs) {

if (ff.getName().equals(filepath)) {

bl="true";

ftpClient.changeWorkingDirectory("/"+filepath+"");

}

}

Log.info("检查文件路径是否存在:/"+filepath);

if("false".equals(bl)){

ViewUtil.dataSEErrorPerformedCommon( "查询文件路径不存在:"+"/"+filepath);

return bl;

}

ftpClient.setBufferSize(1024);

ftpClient.setControlEncoding("GBK");

// 设置文件类型(二进制)

ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);

ftpClient.storeFile(fileName, fis);

Log.info("上传文件成功:"+fileName+"。文件保存路径:"+"/"+filepath+"/");

return bl;

} catch (Exception e) {

throw e;

} finally {

if (fis != null) {

try {

fis.close();

} catch (Exception e) {

Log.info(e.getLocalizedMessage(), e);

}

}

if (bos != null) {

try {

bos.close();

} catch (Exception e) {

Log.info(e.getLocalizedMessage(), e);

}

}

}

}

备注:只需要修改上传的服务器地址、用户名、密码即可进行服务器访问上传。根据实际需要修改即可。

java 上传附件实现方法

第一,jsp上传页面内容:

%@ page contentType="text/html; charset=GBK" %

%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %

html

head

title

jsp1

/title

/head

body bgcolor="#ffffff"

html:form action="myupload.do" method="post" enctype="multipart/form-data"

html:file property="thisFile"/br

html:file property="thisFile"/br

html:submit/

/html:form

/body

/html

第二,一个javabean

package upload;

import org.apache.struts.action.ActionForm;

import org.apache.struts.upload.FormFile;

import org.apache.struts.action.ActionErrors;

import org.apache.struts.action.ActionMapping;

import javax.servlet.http.HttpServletRequest;

public class FileInfo extends ActionForm {

private FormFile thisFile;

public FormFile getThisFile() {

return thisFile;

}

public void setThisFile(FormFile thisFile) {

this.thisFile = thisFile;

}

public ActionErrors validate(ActionMapping actionMapping,

HttpServletRequest httpServletRequest) {

/** @todo: finish this method, this is just the skeleton.*/

return null;

}

public void reset(ActionMapping actionMapping,

HttpServletRequest servletRequest) {

}

}

第三,一个action

package upload;

import java.io.*;

import org.apache.struts.action.ActionMapping;

import org.apache.struts.action.ActionForm;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.ActionForward;

import org.apache.struts.action.Action;

import org.apache.struts.upload.FormFile;

public class myupload extends Action {

public ActionForward execute(ActionMapping actionMapping,

ActionForm actionForm,

HttpServletRequest request,

HttpServletResponse response) throws

FileNotFoundException, IOException {

FileInfo fileInfo = (FileInfo) actionForm;

//获取上传文件

FormFile f=fileInfo.getThisFile();

InputStream is=f.getInputStream();

//将文件存入服务器上

String filename=request.getSession().getServletContext().getRealPath("/shangchuan/"+f.getFileName());

OutputStream os=new FileOutputStream(filename);

int x=0;

//优化流处理过程

byte[] buffer = new byte[8192];

while((x=is.read(buffer, 0, 8192))!=-1)

{

os.write(buffer,0,x);

}

os.close();

response.sendRedirect("jsp1.jsp");//根据实际情况跳转

return null;

}

}

怎么用java发送带附件的邮件代码详解

package email;  

import java.io.BufferedReader;   

import java.io.File;  

import java.io.FileInputStream;  

import java.io.FileNotFoundException;  

import java.io.IOException;  

import java.io.InputStream;  

import java.io.InputStreamReader;  

import java.io.PrintWriter;  

import java.io.UnsupportedEncodingException;  

import java.net.Socket;  

import java.nio.charset.Charset;  

import java.text.SimpleDateFormat;  

import java.util.ArrayList;  

import java.util.Date;  

import java.util.HashMap;  

import java.util.List;  

import java.util.Map;  

import sun.misc.BASE64Encoder;  

public class Mail {  

private static final String LINE_END = "\r\n";  

private boolean isDebug = true;  

private boolean isAllowReadSocketInfo = true;  

private String host;  

private String from;  

private ListString to;  

private ListString cc;  

private ListString bcc;  

private String subject;  

private String user;  

private String password;  

private String contentType;  

private String boundary;  

private String boundaryNextPart;  

private String contentTransferEncoding;  

private String charset;  

private String contentDisposition;  

private String content;  

private String simpleDatePattern;  

private String defaultAttachmentContentType;  

private ListMailPart partSet;  

private static MapString, String contentTypeMap;  

static {  

// MIME Media Types  

contentTypeMap = new HashMapString, String();  

contentTypeMap.put("xls", "application/vnd.ms-excel");  

contentTypeMap.put("xlsx", "application/vnd.ms-excel");  

contentTypeMap.put("xlsm", "application/vnd.ms-excel");  

contentTypeMap.put("xlsb", "application/vnd.ms-excel");  

contentTypeMap.put("doc", "application/msword");  

contentTypeMap.put("dot", "application/msword");  

contentTypeMap.put("docx", "application/msword");  

contentTypeMap.put("docm", "application/msword");  

contentTypeMap.put("dotm", "application/msword");  

}  

private class MailPart extends Mail {  

public MailPart() {  

}  

}  

public Mail() {  

defaultAttachmentContentType = "application/octet-stream";  

simpleDatePattern = "yyyy-MM-dd HH:mm:ss";  

boundary = "--=_NextPart_zlz_3907_" + System.currentTimeMillis();  

boundaryNextPart = "--" + boundary;  

contentTransferEncoding = "base64";  

contentType = "multipart/alternative";  

charset = Charset.defaultCharset().name();  

partSet = new ArrayListMailPart();  

to = new ArrayListString();  

cc = new ArrayListString();  

bcc = new ArrayListString();  

}  

private String getPartContentType(String fileName) {  

String ret = null;  

if (null != fileName) {  

int flag = fileName.lastIndexOf(".");  

if (0 = flag  flag  fileName.length() - 1) {  

fileName = fileName.substring(flag + 1);  

}  

ret = contentTypeMap.get(fileName);  

}  

if (null == ret) {  

ret = defaultAttachmentContentType;  

}  

return ret;  

}  

private String toBase64(String str, String charset) {  

if (null != str) {  

try {  

return toBase64(str.getBytes(charset));  

} catch (UnsupportedEncodingException e) {  

e.printStackTrace();  

}  

}  

return "";  

}  

private String toBase64(byte[] bs) {  

return new BASE64Encoder().encode(bs);  

}  

private String toBase64(String str) {  

return toBase64(str, Charset.defaultCharset().name());  

}  

private String getAllParts() {  

int partCount = partSet.size();  

StringBuilder sbd = new StringBuilder(LINE_END);  

for (int i = partCount - 1; i = 0; i--) {  

Mail attachment = partSet.get(i);  

String attachmentContent = attachment.getContent();  

if (null != attachmentContent  0  attachmentContent.length()) {  

sbd.append(getBoundaryNextPart()).append(LINE_END);  

sbd.append("Content-Type: ");  

sbd.append(attachment.getContentType());  

sbd.append(LINE_END);  

sbd.append("Content-Transfer-Encoding: ");  

sbd.append(attachment.getContentTransferEncoding());  

sbd.append(LINE_END);  

if (i != partCount - 1) {  

sbd.append("Content-Disposition: ");  

sbd.append(attachment.getContentDisposition());  

sbd.append(LINE_END);  

}  

sbd.append(LINE_END);  

sbd.append(attachment.getContent());  

sbd.append(LINE_END);  

}  

}  

sbd.append(LINE_END);  

sbd.append(LINE_END);  

partSet.clear();  

return sbd.toString();  

}  

private void addContent() {  

if (null != content) {  

MailPart part = new MailPart();  

part.setContent(toBase64(content));  

part.setContentType("text/plain;charset=\"" + charset + "\"");  

partSet.add(part);  

}  

}  

private String listToMailString(ListString mailAddressList) {  

StringBuilder sbd = new StringBuilder();  

if (null != mailAddressList) {  

int listSize = mailAddressList.size();  

for (int i = 0; i  listSize; i++) {  

if (0 != i) {  

sbd.append(";");  

}  

sbd.append("").append(mailAddressList.get(i)).append("");  

}  

}  

return sbd.toString();  

}  

private ListString getrecipient() {  

ListString list = new ArrayListString();  

list.addAll(to);  

list.addAll(cc);  

list.addAll(bcc);  

return list;  

}  

public void addAttachment(String filePath) {  

addAttachment(filePath, null);  

}  

public void addTo(String mailAddress) {  

this.to.add(mailAddress);  

}  

public void addCc(String mailAddress) {  

this.cc.add(mailAddress);  

}  

public void addBcc(String mailAddress) {  

this.bcc.add(mailAddress);  

}  

public void addAttachment(String filePath, String charset) {  

if (null != filePath  filePath.length()  0) {  

File file = new File(filePath);  

try {  

addAttachment(file.getName(), new FileInputStream(file),  

charset);  

} catch (FileNotFoundException e) {  

System.out.println("错误:" + e.getMessage());  

System.exit(1);  

}  

}  

}

上传附件 java 代码

SmartUpload上传图片

记得下载jar包啊

别忘了把名改成smartUpload.jar

Utility类:

package com.tidyinfo.utils;

import java.util.Calendar;

public class Utility {

//生成形如:\2006\08\18的路径

private String path;

//生成形如: 20060818125012的唯一id号

private String id;

//生成形如:/2006/08/18的路径

private String url;

private String hour;

private String year;

private String month;

private String day;

private String minate;

private String second;

/** Creates a new instance of Utility */

public Utility() {

this.year =new Integer(Calendar.getInstance().get(Calendar.YEAR)).toString();

this.month = parseToString(Calendar.getInstance().get(Calendar.MONTH)+1);

this.day = parseToString(Calendar.getInstance().get(Calendar.DAY_OF_MONTH));

this.hour = parseToString(Calendar.getInstance().get(Calendar.HOUR_OF_DAY));

this.minate = parseToString(Calendar.getInstance().get(Calendar.MINUTE));

this.second = parseToString(Calendar.getInstance().get(Calendar.SECOND));

this.setId();

this.setPath();

this.setUrl();

}

protected String parseToString(int i){

return i10?("0"+i):new Integer(i).toString();

}

public String getId(){

return this.id;

}

public String getPath(){

return this.path;

}

public String getUrl(){

return this.url;

}

protected void setId(){

this.id = this.year+this.month+this.day+this.hour+this.minate+this.second;

}

protected void setPath(){

this.path = "\\"+this.year + "\\" + this.month + "\\" +

this.day ;

}

protected void setUrl(){

this.url = this.path.replace('\\','/');

}

}

Action:(根据不同情况要更改相关代码)

User userForm = new User();

String result = new String();

SmartUpload su = new SmartUpload();

//文件名

String filename = new String();

//文件扩展名

String fileext = new String();

//文件上传后存储的路径

String path = request.getRealPath(request.getContextPath());

path = path.substring(0,path.lastIndexOf("\\"));

path += "\\images";

//图片的url

String url = new String();

//创建文件夹

java.io.File file = new java.io.File(path);

file.mkdirs();

try{

// 上传初始化

su.initialize(this.servlet.getServletConfig(),request,response);

//设定上传限制

//1.限制每个上传照片的最大长度。

su.setMaxFileSize(5000000);

//2.限制总上传数据的长度。

su.setTotalMaxFileSize(10000000);

//3.设定允许上传的照片(通过扩展名限制)。

su.setAllowedFilesList("jpg,gif,GIF,JPG");

//上传照片

su.upload();

//获得请求的表单数据

String username = su.getRequest().getParameter("username");//username

String password = su.getRequest().getParameter("password");//password

String sex = su.getRequest().getParameter("sex");//sex

String email =su.getRequest().getParameter("email");//email

String apwd =su.getRequest().getParameter("apwd");//question of password

String rpwd =su.getRequest().getParameter("rpwd");//anser of password

userForm.setUsername(username);

userForm.setPassword(password);

userForm.setSex(sex);

userForm.setEmail(email);

userForm.setApwd(apwd);

userForm.setRpwd(rpwd);

//将上传照片全部保存到指定目录

if(!su.getFiles().getFile(0).isMissing()){

su.save(path,su.SAVE_PHYSICAL);

//文件名

filename = su.getFiles().getFile(0).getFileName();

//得到扩展名

fileext = su.getFiles().getFile(0).getFileExt();

//给图片改名,命名形如:20060814135411.gif

Utility u = new Utility();

String newName = u.getId()+"."+fileext;

java.io.File oldFile = new java.io.File(path+"\\"+filename);

java.io.File newFile = new java.io.File( path + "\\"+newName);

//上传图片的url

url = request.getContextPath()+"/images/"+newName;

if(oldFile!=null){

oldFile.renameTo(newFile);

}else{

result+="命名出错!";

}

System.out.println("0000000000000000000"+filename);

System.out.println("0000000000000000000"+path+"\\"+newName);

System.out.println("0000000000000000000"+url);

System.out.println(result);

}

}catch(com.jspsmart.upload.SmartUploadException e){

result += "file出错信息:";

result += e.getMessage();

System.out.println(result);

}

java 代码发邮件怎么添加附件

实现java发送邮件的过程大体有以下几步:

准备一个properties文件,该文件中存放SMTP服务器地址等参数。

利用properties创建一个Session对象

利用Session创建Message对象,然后设置邮件主题和正文

利用Transport对象发送邮件

需要的jar有2个:activation.jar和mail.jar发送附件,需要用到Multipart对象。

import java.io.File;

import java.io.IOException;

import java.io.InputStream;

import java.util.Properties;

import javax.activation.DataHandler;

import javax.activation.DataSource;

import javax.activation.FileDataSource;

import javax.mail.BodyPart;

import javax.mail.Message;

import javax.mail.MessagingException;

import javax.mail.Multipart;

import javax.mail.Session;

import javax.mail.Transport;

import javax.mail.internet.InternetAddress;

import javax.mail.internet.MimeBodyPart;

import javax.mail.internet.MimeMessage;

import javax.mail.internet.MimeMultipart;

import javax.mail.internet.MimeUtility;

public class JavaMailWithAttachment {

    private MimeMessage message;

    private Session session;

    private Transport transport;

    private String mailHost = "";

    private String sender_username = "";

    private String sender_password = "";

    private Properties properties = new Properties();

    /*

     * 初始化方法

     */

    public JavaMailWithAttachment(boolean debug) {

        InputStream in = JavaMailWithAttachment.class.getResourceAsStream("MailServer.properties");

        try {

            properties.load(in);

            this.mailHost = properties.getProperty("mail.smtp.host");

            this.sender_username = properties.getProperty("mail.sender.username");

            this.sender_password = properties.getProperty("mail.sender.password");

        } catch (IOException e) {

            e.printStackTrace();

        }

        session = Session.getInstance(properties);

        session.setDebug(debug);// 开启后有调试信息

        message = new MimeMessage(session);

    }

    /**

     * 发送邮件

     * 

     * @param subject

     *            邮件主题

     * @param sendHtml

     *            邮件内容

     * @param receiveUser

     *            收件人地址

     * @param attachment

     *            附件

     */

    public void doSendHtmlEmail(String subject, String sendHtml, String receiveUser, File attachment) {

        try {

            // 发件人

            InternetAddress from = new InternetAddress(sender_username);

            message.setFrom(from);

            // 收件人

            InternetAddress to = new InternetAddress(receiveUser);

            message.setRecipient(Message.RecipientType.TO, to);

            // 邮件主题

            message.setSubject(subject);

            // 向multipart对象中添加邮件的各个部分内容,包括文本内容和附件

            Multipart multipart = new MimeMultipart();

            

            // 添加邮件正文

            BodyPart contentPart = new MimeBodyPart();

            contentPart.setContent(sendHtml, "text/html;charset=UTF-8");

            multipart.addBodyPart(contentPart);

            

            // 添加附件的内容

            if (attachment != null) {

                BodyPart attachmentBodyPart = new MimeBodyPart();

                DataSource source = new FileDataSource(attachment);

                attachmentBodyPart.setDataHandler(new DataHandler(source));

                

                // 网上流传的解决文件名乱码的方法,其实用MimeUtility.encodeWord就可以很方便的搞定

                // 这里很重要,通过下面的Base64编码的转换可以保证你的中文附件标题名在发送时不会变成乱码

                //sun.misc.BASE64Encoder enc = new sun.misc.BASE64Encoder();

                //messageBodyPart.setFileName("=?GBK?B?" + enc.encode(attachment.getName().getBytes()) + "?=");

                

                //MimeUtility.encodeWord可以避免文件名乱码

                attachmentBodyPart.setFileName(MimeUtility.encodeWord(attachment.getName()));

                multipart.addBodyPart(attachmentBodyPart);

            }

            

            // 将multipart对象放到message中

            message.setContent(multipart);

            // 保存邮件

            message.saveChanges();

            transport = session.getTransport("smtp");

            // smtp验证,就是你用来发邮件的邮箱用户名密码

            transport.connect(mailHost, sender_username, sender_password);

            // 发送

            transport.sendMessage(message, message.getAllRecipients());

            System.out.println("send success!");

        } catch (Exception e) {

            e.printStackTrace();

        } finally {

            if (transport != null) {

                try {

                    transport.close();

                } catch (MessagingException e) {

                    e.printStackTrace();

                }

            }

        }

    }

    public static void main(String[] args) {

        JavaMailWithAttachment se = new JavaMailWithAttachment(true);

        File affix = new File("c:\\测试-test.txt");

        se.doSendHtmlEmail("邮件主题", "邮件内容", "xxx@XXX.com", affix);//

    }

}