如何在Swing中加载多个文件?
我有一个文件上传按钮,然后我以字节形式保存文件,如何更改代码,以便我可以上传多个文件。我已经尝试了很多次,但我遇到了麻烦......我希望有人可以帮助我
byte[] FileSurat;
String FilenameSurat;
File imageSurat;
private void botton10ActionPerformed(java.awt.event.ActionEvent evt) {
if (idPemohon == 0 && idRencanaTapak == 0){
JOptionPane.showMessageDialog(this, "Pilih Data Yang akan di Upload");
}else{
JFileChooser chooser = new JFileChooser();
chooser.setCurrentDirectory(new File(System.getProperty("user.home")));
chooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
chooser.addChoosableFileFilter(new FileNameExtensionFilter("Images", "jpg", "png", "gif", "bmp"));
chooser.setAcceptAllFileFilterUsed(true);
int i = chooser.showOpenDialog(this);
if (i == JFileChooser.APPROVE_OPTION) {
if(labelSurat != null){
FileSurat = null;
FilenameSurat = null;
jPanel2.remove(labelSurat);
jPanel2.validate();
jPanel2.repaint();
}
try {
imageSurat = chooser.getSelectedFile();
String filename = chooser.getSelectedFile().getName();
String extension = "";
int y = filename.lastIndexOf('.');
if (y > 0) {
extension = filename.substring(y+1);
}
String xx = chooser.getTypeDescription(imageSurat);
if("JPEG image".equals(xx) || "PNG image".equals(xx) || "JPG image".equals(xx) || "GIF image".equals(xx) || "BMP image".equals(xx)){
BufferedImage originalImage = ImageIO.read(imageSurat);
if(originalImage == null){
JOptionPane.showMessageDialog(rootPane, "Format file corrupt");
}else{
int type = originalImage.getType() == 0 ? BufferedImage.TYPE_INT_ARGB : originalImage.getType();
BufferedImage resizeImageJpg = resizeImage(originalImage, type);
photoSurat = new ImageIcon(toImage(resizeImageJpg));
}
}else{
ico = new File(getClass().getResource("/images/no-image.png").getFile());
BufferedImage originalImage = ImageIO.read(ico);
int type = originalImage.getType() == 0 ? BufferedImage.TYPE_INT_ARGB : originalImage.getType();
BufferedImage resizeImageJpg = resizeImage(originalImage, type);
photoSurat = new ImageIcon(toImage(resizeImageJpg));
}
FilenameSurat = extension;
FileSurat = new byte[(int) imageSurat.length()];
FileInputStream fileInputStream = new FileInputStream(imageSurat);
fileInputStream.read(FileSurat);
//jPanel2.removeAll();
labelSurat = new JLabel("", photoSurat, JLabel.RIGHT);
jPanel2.add(labelSurat);
ico = null;
repaint();
chooser.setCurrentDirectory(imageSurat);
} catch (IOException ex) {
Logger.getLogger(formUtama.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
}
答案 0 :(得分:2)
您将JFileChooser
切换为允许multiple selection,然后使用JFileChooser#getSelectedFiles
方法获取File
s而不是单个数组。
使用您拥有的相同代码循环遍历数组
答案 1 :(得分:2)
请参阅this answer的多张图片部分,了解显示多张图片的两种方式(<3>}。
有关形成图像文件过滤器的更好方法(请参阅硬编码类型),请参阅this answer。