Java swing实现图片上传

Java swing实现图片上传
最近在写有关小说网站的项目,里面需要用到上传图片的功能,今天就来分享一下如何实现

简单的主界面
在这里插入图片描述
这是点击上传图片按钮后
在这里插入图片描述
上传成功效果图
这里我放了个标签用于显示我成功上传的图片
在这里插入图片描述

上传的内容已经存在进行报错
在这里插入图片描述

上传的内容不符合jpg或者png进行报错

在这里插入图片描述

代码如下:

注意:
String path = “C:\Users\admin\eclipse-workspace\MySQLTest\src\png”;这个path是你设置想要图片上传到哪里的路径,根据自己想要上传到哪个路径自行设置

import java.awt.BorderLayout;
import java.awt.EventQueue;
import java.awt.Image;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.filechooser.FileNameExtensionFilter;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFileChooser;

import java.awt.event.ActionListener;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.HashSet;
import java.awt.event.ActionEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.Font;

public class ShanggchuangFrm extends JFrame {

	private JPanel contentPane;
	private static JLabel lblNewLabel;
    private JButton btnNewButton ;
	/**
	 * Launch the application.
	 */
	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					ShanggchuangFrm frame = new ShanggchuangFrm();
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the frame.
	 */
	public ShanggchuangFrm() {
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(100, 100, 622, 421);
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		setContentPane(contentPane);
		contentPane.setLayout(null);
		
		lblNewLabel = new JLabel("");
		lblNewLabel.setBounds(36, 39, 250, 250);
		contentPane.add(lblNewLabel);
		
		btnNewButton = new JButton("\u4E0A\u4F20\u56FE\u7247");
		btnNewButton.setFont(new Font("宋体", Font.BOLD, 18));
		btnNewButton.addMouseListener(new MouseAdapter() {
			@Override
			public void mouseClicked(MouseEvent e) {
				addPicture(btnNewButton);
			}
		});
	
		btnNewButton.setBounds(355, 264, 141, 46);
		contentPane.add(btnNewButton);
	}

	
	//上传图片
	public static void addPicture(JButton button) {
		  JFileChooser chooser = new JFileChooser();
		  chooser.setMultiSelectionEnabled(true);
		  /** 过滤文件类型 * */
		  FileNameExtensionFilter filter = new FileNameExtensionFilter("jpg","png");
		  chooser.setFileFilter(filter);
		  int returnVal = chooser.showOpenDialog(button);
		  if (returnVal == JFileChooser.APPROVE_OPTION) { 
		   /** 得到选择的文件* */
		   File[] arrfiles = chooser.getSelectedFiles();
		   if (arrfiles == null || arrfiles.length == 0) {
		    return;
		   }
		   //判断是否有文件为jpg或者png
		 File  ff = chooser.getSelectedFile();
		 //创建一个fileName得到选择文件的名字
		 String fileName =ff.getName();
		 //lastIndexOf(".") 返回"."在文件名中最后一次出现的下标
		 //substring(int index)从指定的index开始截取后面的字符串
		 //比如: a.txt 最后一次出现的.下标是 1 substring(1)就是从下标1的位置开始截取 截取后的新字符串为 .txt
		 //所以这里需要+1 才能只截取文件类型 txt
		 String prefix=fileName.substring(fileName.lastIndexOf(".")+1);
		 //判断选择的文件是否是图片文件 必须排除不是的情况 不然后续操作会报错
		 if(!(prefix.equals("jpg") || prefix.equals("png"))){
		 JOptionPane.showMessageDialog(new JDialog(),":请选择.jpg 或 .png格式的图片");
		 return;
		 }
		   FileInputStream input = null;
		   FileOutputStream out = null;
		   //要上传到的路径,这里可以设你要放图片的路径
		   String path = "C:\\Users\\admin\\eclipse-workspace\\MySQLTest\\src\\png";
		   try {
		    for (File f : arrfiles) {
		     File dir = new File(path);
		     /** 目标文件夹 * */
		     File[] fs = dir.listFiles();
		     HashSet<String> set = new HashSet<String>();
		     for (File file : fs) {
		      set.add(file.getName());
		     }
		     /** 判断是否已有该文件* */
		     if (set.contains(f.getName())) {
		      JOptionPane.showMessageDialog(new JDialog(),
		        f.getName() + ":该文件已存在!");
		      return;
		     }
		     
		   //通过文件选择器对象拿到选择的文件.拿到该文件的绝对路径
		     String absolutePath = chooser.getSelectedFile().getAbsolutePath();
		   //创建一个ImageIcon对象 传入图片文件的绝对路径
		     ImageIcon imageIcon = new ImageIcon(absolutePath);
		     lblNewLabel.setIcon(imageIcon);
		     lblNewLabel.getIcon();
		     input = new FileInputStream(f);
		     byte[] buffer = new byte[1024];
		     File des = new File(path, f.getName());
		     out = new FileOutputStream(des);
		     int len = 0;
		     while (-1 != (len = input.read(buffer))) {
		      out.write(buffer, 0, len);
		     }
		     out.close();
		     input.close();
		    }
		    JOptionPane.showMessageDialog(null, "上传成功!", "提示",
		      JOptionPane.INFORMATION_MESSAGE);
		   } catch (FileNotFoundException e1) {
		    JOptionPane.showMessageDialog(null, "上传失败!", "提示",
		      JOptionPane.ERROR_MESSAGE);
		    e1.printStackTrace();
		   } catch (IOException e1) {
		    JOptionPane.showMessageDialog(null, "上传失败!", "提示",
		      JOptionPane.ERROR_MESSAGE);
		    e1.printStackTrace();
		   }
		  }
		 }
		}
  • 10
    点赞
  • 50
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
Java Swing中上视频和图片可以通过以下步骤实现: 1. 创建一个JFileChooser对象,用于选择要上的文件。 2. 使用JFileChooser.showOpenDialog()方法来打开文件选择对话框。 3. 获取用户选择的文件路径并将其保存到一个字符串中。 4. 将该文件路径发送到服务器,以便服务器可以将其上到指定的位置。 下面是一个简单的示例代码,演示如何上视频和图片: ```java import java.awt.EventQueue; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.File; import java.io.IOException; import javax.swing.JButton; import javax.swing.JFileChooser; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.filechooser.FileNameExtensionFilter; public class FileUploadExample extends JFrame { private JPanel contentPane; private JButton btnUpload; private JFileChooser fileChooser; public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { public void run() { try { FileUploadExample frame = new FileUploadExample(); frame.setVisible(true); } catch (Exception e) { e.printStackTrace(); } } }); } public FileUploadExample() { setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setBounds(100, 100, 450, 300); contentPane = new JPanel(); setContentPane(contentPane); contentPane.setLayout(null); btnUpload = new JButton("Upload"); btnUpload.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { uploadFile(); } }); btnUpload.setBounds(163, 109, 117, 29); contentPane.add(btnUpload); fileChooser = new JFileChooser(); fileChooser.setFileFilter(new FileNameExtensionFilter("Video & Images", "mp4", "png", "jpg", "gif")); } private void uploadFile() { int returnVal = fileChooser.showOpenDialog(this); if (returnVal == JFileChooser.APPROVE_OPTION) { File file = fileChooser.getSelectedFile(); try { // 将文件上到服务器 uploadToServer(file); } catch (IOException e) { e.printStackTrace(); } } } private void uploadToServer(File file) throws IOException { // 在这里添加上到服务器的代码 System.out.println("File uploaded: " + file.getAbsolutePath()); } } ``` 在上面的代码中,我们创建了一个JFileChooser对象,用于选择要上的文件。我们还使用setFileFilter()方法来设置文件过滤器,以便用户只能选择视频和图像。当用户单击“Upload”按钮时,我们检查用户是否选择了一个文件,并将文件上到服务器。 请注意,uploadToServer()方法是一个虚拟方法,需要您根据自己的需要来实现。在这个方法中,您可以将文件上到您的服务器,或者使用其他方法来处理它们。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值