jsp文件上传

来源:互联网 发布:电脑软件自己开 编辑:程序博客网 时间:2024/05/05 00:32

服务端

 

package Net;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
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 javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
import javax.swing.JButton;


public class UpLoadServeDemo extends JFrame {
 private JTextField textField;
 Socket socket;
 ServerSocket server;
 String fileName;

 public UpLoadServeDemo() {
  //服务端界面布局
  setTitle("上传服务器");
  getContentPane().setLayout(null);
  
  JLabel label = new JLabel("监听窗口:");
  label.setBounds(86, 80, 74, 15);
  getContentPane().add(label);
  
  textField = new JTextField();
  textField.setBounds(178, 77, 112, 21);
  getContentPane().add(textField);
  textField.setColumns(10);
  
  final JButton button = new JButton("启动服务器");
  //事件监听
  button.addActionListener(new ActionListener() {
   public void actionPerformed(ActionEvent e) {
    // TODO Auto-generated method stub

    //使用多线程
    new Thread(new Runnable() {
     public void run() {
      try {
       //判断是否给定了端口号
       if("".equals(textField.getText()) ){
        JOptionPane.showMessageDialog(null, "请输入端口号!!!");
       }
       else if (Integer.parseInt(textField.getText()) > 65535 || Integer.parseInt(textField.getText()) < 1024 ){
        JOptionPane.showMessageDialog(null, "请输入正确的端口号");
       }
       else if((Integer.parseInt(textField.getText()) < 65535 && Integer.parseInt(textField.getText()) > 1024)){
        server = new ServerSocket(Integer.parseInt(textField.getText()));
        JOptionPane.showMessageDialog(null, "服务器开启");
        textField.setEnabled(false);  //控件黑白不可变
        button.setEnabled(false);//设置按钮黑白不可变
       }
       while (true) {
        socket = server.accept();
        
        final DataInputStream bufIn = new DataInputStream(
          socket.getInputStream());//定义一个数据输入流
        final BufferedOutputStream bufOut = new BufferedOutputStream(
          socket.getOutputStream());//定义一个缓冲区输出流
        new Thread(new Runnable() {
         public void run() {
          try {
           byte[] Name = new byte[1024];//定义一个装文件名的字节数组
           bufIn.read(Name);
           fileName = new String(Name).trim();//获取上传文件的名字
           System.out.println("上传成功,文件:"+fileName);
           if (JOptionPane.showConfirmDialog(null, "是否保存" + fileName) == 1) {//弹框  是否保存
            return;
           }
           try {
            BufferedOutputStream bufOutFile = new BufferedOutputStream(
              new FileOutputStream("d:"+File.separator+"迅雷"+File.separator + fileName));
            int line = 0;
            byte[] bytes = new byte[1024*1024*100];
            //循环读取
            while ((line = bufIn.read(bytes)) != -1) {
             bufOutFile.write(bytes, 0,line);
             bufOutFile.flush();
            }
            bufOut.write("上传成功".getBytes());
            bufOut.flush();
            //关流
            bufOutFile.close();
            bufOut.close();
            bufIn.close();
           } catch (Exception e) {
            // TODO Auto-generated catch
            // block
            e.printStackTrace();
           }
          } catch (IOException e) {
           // TODO Auto-generated catch block
           e.printStackTrace();
          }
         }
        }).start();
       }
      } catch (Exception e2) {
       // TODO Auto-generated catch block
       e2.printStackTrace();
      }
     }
    }).start();
   }
  });
  button.setBounds(73, 145, 93, 23);
  getContentPane().add(button);
  
  //事件监听 关闭服务端
  JButton button_1 = new JButton("关闭服务器");
  button_1.addActionListener(new ActionListener() {
   public void actionPerformed(ActionEvent e) {
    // TODO Auto-generated method stub
    //判断服务端是否开启
    if("".equals(textField.getText())){
     JOptionPane.showMessageDialog(null, "服务器未开启!!!");
    }
    else{
     JOptionPane.showMessageDialog(null, "服务器关闭");
     JLabel label1 = new JLabel("123:");
     label1.setBounds(50, 12, 74, 15);
     getContentPane().add(label1);
     //将端口号设为null
     socket = null;
     //将文本框中的文字颜色和button颜色设为初始值
     textField.setEnabled(true);
     button.setEnabled(true);
     
    }

   }
  });
  //界面布局
  button_1.setBounds(209, 145, 93, 23);
  getContentPane().add(button_1);
  setBounds(600, 200, 380, 300);
  // 设置用户在此窗体上发起 "close(关闭)" 时默认执行的操作。
  setDefaultCloseOperation(DISPOSE_ON_CLOSE);//DISPOSE_ON_CLOSE 调用任意已注册 WindowLsistener 的对象后自动隐藏并释放该窗体。
  setResizable(false);//关闭最大化
  setLocationRelativeTo(null);//居中
  setVisible(true);
 }
 public static void main(String[] args) {
  new UpLoadServeDemo();
 }
}

 

 

 

 

 

客服端

 

package Net;

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedInputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.net.Socket;

import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JProgressBar;
import javax.swing.JTextField;
import javax.swing.JButton;


public class UploadCilentDemo extends JFrame {
 private JTextField textField;//JTextField 单行文本 获取IP地址
 private JTextField textField_1;//JTextField 单行文本 获取端口号
 private JTextField textField_2;//JTextField 单行文本 获取文件绝对路径
 private JProgressBar progressBar;//进度条
 File file;//获取文件

 public UploadCilentDemo() {
  //文件上传界面布局
  setTitle("上传客户端");
  getContentPane().setLayout(null);//设置布局为null
  
  //添加组件 并给设置位置大小
  JLabel lblip = new JLabel("服务器IP:");
  lblip.setBounds(37, 40, 69, 15);
  getContentPane().add(lblip);

  JLabel lblNewLabel = new JLabel("服务器端口:");
  lblNewLabel.setBounds(37, 65, 82, 15);
  getContentPane().add(lblNewLabel);

  textField = new JTextField();
  textField.setBounds(129, 37, 139, 21);
  getContentPane().add(textField);

  textField_1 = new JTextField();
  textField_1.setBounds(129, 62, 139, 21);
  getContentPane().add(textField_1);
  
  //添加一个测试网络是否联通的测试按钮
  JButton button = new JButton("测试网络");
  
  //时间监听
  button.addActionListener(new ActionListener() {
   public void actionPerformed(ActionEvent e) {
    try {
     //通过获取界面给定的IP和端口号
     Socket socket = new Socket(textField.getText(), Integer.parseInt(textField_1.getText()));
     textField.setEnabled(false);
     textField_1.setEnabled(false);
     JOptionPane.showMessageDialog(null, "连接成功");//设置一个弹框
    } catch (Exception e1) {
     JOptionPane.showMessageDialog(null, "IP地址或端口号不正确"
       +"\n"+ "      或服务器未开启");
    }
   }
  });
  //设置边界值
  button.setBounds(301, 61, 93, 23);
  getContentPane().add(button);

  JLabel lblNewLabel_1 = new JLabel("请输入要上传得文件(包含绝对路径)");
  lblNewLabel_1.setBounds(37, 133, 231, 15);
  getContentPane().add(lblNewLabel_1);

  textField_2 = new JTextField();
  textField_2.setBounds(37, 165, 231, 21);
  getContentPane().add(textField_2);
  textField_2.setColumns(10);
  
  //进度条
  progressBar = new JProgressBar();
  getContentPane().add(progressBar, BorderLayout.NORTH);
  progressBar.setStringPainted(true);
  progressBar.setBounds(37, 200,231,15);
  progressBar.setBackground(getForeground());
 
  //progressBar.setValue();
  setVisible(false);
  //选择文件
  JButton button_1 = new JButton("浏览");
  button_1.addActionListener(new ActionListener() {
   public void actionPerformed(ActionEvent e) {
    // TODO Auto-generated method stub
    JFileChooser jchoose = new JFileChooser();//选择器
    // jchoose.showDialog(null, "确定");
    if (jchoose.showDialog(null, "确定") == 1) {
     return;
    }
    
    //将jchoose中的文件赋值给file
    file = jchoose.getSelectedFile();
    //将文件路径给textField_2
    textField_2.setText(jchoose.getSelectedFile().toString());
    //将文件路径更改为黑色补课更改
    textField_2.setEnabled(false);
   }
  });
  button_1.setBounds(301, 164, 93, 23);
  getContentPane().add(button_1);
  
  //上传文件   时间监听
  JButton button_2 = new JButton("上传");
  button_2.addActionListener(new ActionListener() {
   
   public void actionPerformed(ActionEvent e) {
    try {
     //从文本框中获取IP地址和端口号
     Socket socket = new Socket(textField.getText(), Integer
       .parseInt(textField_1.getText()));
     DataOutputStream bufOut = new DataOutputStream(
       socket.getOutputStream());
     BufferedInputStream bufIn = new BufferedInputStream(
       new FileInputStream(file));
     System.out.println(file.getName());
     bufOut.write(file.getName().getBytes());
     bufOut.flush();
     //Thread.sleep(1000);//
     byte[] bytes = new byte[1024*1024];
     int num = 0;
     while ((num = bufIn.read(bytes)) != -1) {
      bufOut.write(bytes, 0, num);
      bufOut.flush();
     }
     socket.shutdownOutput();
     BufferedInputStream bufReback = new BufferedInputStream(
       socket.getInputStream());
     byte[] b = new byte[1024];
     bufReback.read(b);
     if (!new String(b).trim().equals(""))
      JOptionPane.showMessageDialog(null, "上传成功");
     bufIn.close();
     bufReback.close();
     bufOut.close();
     socket.close();
    } catch (Exception e1) {
     // TODO Auto-generated catch block
     JOptionPane.showMessageDialog(null, "请选择文件!!!");
    }
   }
  });
  
  button_2.setBounds(301, 197, 93, 23);//上传按钮位置大小设置
  getContentPane().add(button_2);
  setBounds(160, 200, 440, 300);//主窗口位置大小设置
  setDefaultCloseOperation(DISPOSE_ON_CLOSE);
  setResizable(false);
  setVisible(true);
 }
 public static void main(String[] args) {
  new UploadCilentDemo();
 }
}

0 0
原创粉丝点击