「发送文件java」发送文件到邮箱怎么发

博主:adminadmin 2023-01-21 15:12:08 242

今天给各位分享发送文件java的知识,其中也会对发送文件到邮箱怎么发进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

java文件发给别人,别人需要部署吗

需要部署的

1.搭建一台FTP服务器,然后通过FTP协议进行文件传输。这个方式固然有效,但是有点麻烦。

2.通过Socket来传输文件,这种方法需要编写一个客户端和一个服务端,这种方案比较通用,在其他方案不可行的情况下,这种方案还是不错的。

3.搭建一台HTTP服务器(例如tomcat),上传文件时直接将文件上传到这台机器上,需要部署用来上传文件的应用。

4.如果是windows系统可以采取最简单的形式来完成文件传输(文件共享)。

java socket传送文件

客户端代码如下:

import java.io.DataOutputStream;  

import java.io.File;  

import java.io.FileInputStream;  

import java.io.IOException;  

import java.net.InetSocketAddress;  

import java.net.Socket;  

  

/** 

 * 文件发送客户端主程序 

 * @author admin_Hzw 

 * 

 */  

public class BxClient {  

      

    /** 

     * 程序main方法 

     * @param args 

     * @throws IOException 

     */  

    public static void main(String[] args) throws IOException {  

        int length = 0;  

        double sumL = 0 ;  

        byte[] sendBytes = null;  

        Socket socket = null;  

        DataOutputStream dos = null;  

        FileInputStream fis = null;  

        boolean bool = false;  

        try {  

            File file = new File("D:/天啊.zip"); //要传输的文件路径  

            long l = file.length();   

            socket = new Socket();    

            socket.connect(new InetSocketAddress("127.0.0.1", 48123));  

            dos = new DataOutputStream(socket.getOutputStream());  

            fis = new FileInputStream(file);        

            sendBytes = new byte[1024];    

            while ((length = fis.read(sendBytes, 0, sendBytes.length))  0) {  

                sumL += length;    

                System.out.println("已传输:"+((sumL/l)*100)+"%");  

                dos.write(sendBytes, 0, length);  

                dos.flush();  

            }   

            //虽然数据类型不同,但JAVA会自动转换成相同数据类型后在做比较  

            if(sumL==l){  

                bool = true;  

            }  

        }catch (Exception e) {  

            System.out.println("客户端文件传输异常");  

            bool = false;  

            e.printStackTrace();    

        } finally{    

            if (dos != null)  

                dos.close();  

            if (fis != null)  

                fis.close();     

            if (socket != null)  

                socket.close();      

        }  

        System.out.println(bool?"成功":"失败");  

    }  

}

服务端代码如下:

import java.io.DataInputStream;  

import java.io.File;  

import java.io.FileOutputStream;  

import java.io.IOException;  

import java.net.ServerSocket;  

import java.net.Socket;  

import java.util.Random;  

import com.boxun.util.GetDate;  

  

  

/** 

 * 接收文件服务 

 * @author admin_Hzw 

 * 

 */  

public class BxServerSocket {  

      

    /** 

     * 工程main方法 

     * @param args 

     */  

    public static void main(String[] args) {  

        try {  

            final ServerSocket server = new ServerSocket(48123);  

            Thread th = new Thread(new Runnable() {  

                public void run() {  

                    while (true) {  

                        try {    

                            System.out.println("开始监听...");  

                            /* 

                             * 如果没有访问它会自动等待 

                             */  

                            Socket socket = server.accept();  

                            System.out.println("有链接");  

                            receiveFile(socket);  

                        } catch (Exception e) {  

                            System.out.println("服务器异常");  

                            e.printStackTrace();  

                        }  

                    }  

                }  

            });  

            th.run(); //启动线程运行  

        } catch (Exception e) {  

            e.printStackTrace();  

        }       

    }  

  

    public void run() {  

    }  

  

    /** 

     * 接收文件方法 

     * @param socket 

     * @throws IOException 

     */  

    public static void receiveFile(Socket socket) throws IOException {  

        byte[] inputByte = null;  

        int length = 0;  

        DataInputStream dis = null;  

        FileOutputStream fos = null;  

        String filePath = "D:/temp/"+GetDate.getDate()+"SJ"+new Random().nextInt(10000)+".zip";  

        try {  

            try {  

                dis = new DataInputStream(socket.getInputStream());  

                File f = new File("D:/temp");  

                if(!f.exists()){  

                    f.mkdir();    

                }  

                /*   

                 * 文件存储位置   

                 */  

                fos = new FileOutputStream(new File(filePath));      

                inputByte = new byte[1024];     

                System.out.println("开始接收数据...");    

                while ((length = dis.read(inputByte, 0, inputByte.length))  0) {  

                    fos.write(inputByte, 0, length);  

                    fos.flush();      

                }  

                System.out.println("完成接收:"+filePath);  

            } finally {  

                if (fos != null)  

                    fos.close();  

                if (dis != null)  

                    dis.close();  

                if (socket != null)  

                    socket.close();   

            }  

        } catch (Exception e) {  

            e.printStackTrace();  

        }  

    }  

}

用Java实现在两台电脑之间的文件传输

使用Socket可以做到,不过直接编程一般都是在局域网内,如果要在不同局域网间通信,需要使用一台有公网IP的服务器,可以电脑A和电脑B同时连接服务器,然后A向服务器传递文件,服务器再将文件转发电脑B。也可以使用打洞的方式使A、B互联,此时服务器的作用是辅助打洞。A、B向服务器发送信息后socket不要关闭(假设使用10989端口),同时使用Serversocket绑定监听相同的端口(监听10989端口)。在java中有参数可以做到,具体方法请自行百度。服务器获取到A、B的外网地址和端口,将A的外网地址信息发送给B、将B的外网地址信息发送给A。然后使用A没有关闭的Socket向B发送一组信息(此时连接会失败,但是B的路由表上已经记录了A的信息),发送后A向服务器发送消息,服务器告诉B A已经发送消息。然后B使用未关闭的socket向A发送消息,就和A上监听的ServerSocket取得连接了。之后就可以互相传递数据。

java中如何实现从客户端发送文件到服务器端

BufferedInputStream bis = new BufferedInputStream( new FileInputStream("文件路径"));

byte[] buf = new byte[1024];

int len = 0;

BufferedOutputStream bos = new BufferedOutputStream(s.getOutputStream);

while((len = bis.read(buf))!=-1){

bos.write(buf,0,len);

bos.flush();

}

思路是这样的了。。。具体你自己写吧。

http如何实现同时发送文件和报文(用java实现)

你用的servlet 还是别的框架?

选POST

选form-data

选body

选File

选文件

Send

// commons fileupload组件的情况下,servlet接收的数据只能是type=file表单元素类型,那么获取type=text类型,就可以使用parseRequest(request)来获取list,fileitem,判断isFormField,为true非file类型的。就可以处理了。下面是处理的部分代码:

DiskFileItemFactory factory = new DiskFileItemFactory();factory.setSizeThreshold(1024*1024);

String dirtemp = "c:";

File filedir = new File(dirtemp + "filetemp");

String str = null;if(!filedir.exists())filedir.mkdir();factory.setRepository(filedir);

ServletFileUpload upload = new ServletFileUpload(factory);

List list = upload.parseRequest(request);for(

int i = 0;ilist.size();i++)

{

FileItem item = (FileItem) list.get(i);

if (item.isFormField()) {

System.out.println(item.getString());

} else {

String filename = item.getName();

item.write(new File(request.getRealPath(dir), filename));

}

}

java中如何实现从客户端发送文件到服务器端?

服务器端源码:\x0d\x0aimport java.io.BufferedReader;\x0d\x0aimport java.io.File;\x0d\x0aimport java.io.FileNotFoundException;\x0d\x0aimport java.io.FileOutputStream;\x0d\x0aimport java.io.IOException;\x0d\x0aimport java.io.InputStream;\x0d\x0aimport java.io.InputStreamReader;\x0d\x0aimport java.net.ServerSocket;\x0d\x0aimport java.net.Socket;\x0d\x0a\x0d\x0a/**\x0d\x0a *\x0d\x0a * 文件名:ServerReceive.java\x0d\x0a * 实现功能:作为服务器接收客户端发送的文件\x0d\x0a *\x0d\x0a * 具体实现过程:\x0d\x0a * 1、建立SocketServer,等待客户端的连接\x0d\x0a * 2、当有客户端连接的时候,按照双方的约定,这时要读取一行数据\x0d\x0a * 其中保存客户端要发送的文件名和文件大小信息\x0d\x0a * 3、根据文件名在本地创建文件,并建立好流通信\x0d\x0a * 4、循环接收数据包,将数据包写入文件\x0d\x0a * 5、当接收数据的长度等于提前文件发过来的文件长度,即表示文件接收完毕,关闭文件\x0d\x0a * 6、文件接收工作结束\x0d\x0a\x0d\x0apublic class ServerReceive {\x0d\x0a \x0d\x0a public static void main(String[] args) {\x0d\x0a \x0d\x0a /**与服务器建立连接的通信句柄*/\x0d\x0a ServerSocket ss = null;\x0d\x0a Socket s = null;\x0d\x0a \x0d\x0a /**定义用于在接收后在本地创建的文件对象和文件输出流对象*/\x0d\x0a File file = null;\x0d\x0a FileOutputStream fos = null;\x0d\x0a \x0d\x0a /**定义输入流,使用socket的inputStream对数据包进行输入*/\x0d\x0a InputStream is = null;\x0d\x0a \x0d\x0a /**定义byte数组来作为数据包的存储数据包*/\x0d\x0a byte[] buffer = new byte[4096 * 5];\x0d\x0a \x0d\x0a /**用来接收文件发送请求的字符串*/\x0d\x0a String comm = null;\x0d\x0a\x0d\x0a/**建立socekt通信,等待服务器进行连接*/\x0d\x0a try {\x0d\x0a ss = new ServerSocket(4004);\x0d\x0a s = ss.accept();\x0d\x0a } catch (IOException e) {\x0d\x0a e.printStackTrace();\x0d\x0a }\x0d\x0a\x0d\x0a/**读取一行客户端发送过来的约定信息*/\x0d\x0a try {\x0d\x0a InputStreamReader isr = new InputStreamReader(s.getInputStream());\x0d\x0a BufferedReader br = new BufferedReader(isr);\x0d\x0a comm = br.readLine();\x0d\x0a } catch (IOException e) {\x0d\x0a System.out.println("服务器与客户端断开连接");\x0d\x0a }\x0d\x0a \x0d\x0a /**开始解析客户端发送过来的请求命令*/\x0d\x0a int index = comm.indexOf("/#");\x0d\x0a \x0d\x0a /**判断协议是否为发送文件的协议*/\x0d\x0a String xieyi = comm.substring(0, index);\x0d\x0a if(!xieyi.equals("111")){\x0d\x0a System.out.println("服务器收到的协议码不正确");\x0d\x0a return;\x0d\x0a }\x0d\x0a \x0d\x0a /**解析出文件的名字和大小*/\x0d\x0a comm = comm.substring(index + 2);\x0d\x0a index = comm.indexOf("/#");\x0d\x0a String filename = comm.substring(0, index).trim();\x0d\x0a String filesize = comm.substring(index + 2).trim();\x0d\x0a\x0d\x0a/**创建空文件,用来进行接收文件*/\x0d\x0a file = new File(filename);\x0d\x0a if(!file.exists()){\x0d\x0a try {\x0d\x0a file.createNewFile();\x0d\x0a } catch (IOException e) {\x0d\x0a System.out.println("服务器端创建文件失败");\x0d\x0a }\x0d\x0a }else{\x0d\x0a /**在此也可以询问是否覆盖*/\x0d\x0a System.out.println("本路径已存在相同文件,进行覆盖");\x0d\x0a }\x0d\x0a \x0d\x0a /**【以上就是客户端代码中写到的服务器的准备部分】*/\x0d\x0a\x0d\x0a/**\x0d\x0a * 服务器接收文件的关键代码*/\x0d\x0a try {\x0d\x0a /**将文件包装到文件输出流对象中*/\x0d\x0a fos = new FileOutputStream(file);\x0d\x0a long file_size = Long.parseLong(filesize);\x0d\x0a is = s.getInputStream();\x0d\x0a /**size为每次接收数据包的长度*/\x0d\x0a int size = 0;\x0d\x0a /**count用来记录已接收到文件的长度*/\x0d\x0a long count = 0;\x0d\x0a \x0d\x0a /**使用while循环接收数据包*/\x0d\x0a while(count

回答于 2022-12-11

发送文件java的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于发送文件到邮箱怎么发、发送文件java的信息别忘了在本站进行查找喔。