如何使用Java将图像保存到SQL Server?当图像包含在我的项目包装中时



我正在创建一个应用程序,用户可以在其中添加不同人的配置文件,包括他的个人资料图片。但是,当没有图片上传时,我想启用该选项。这样,我想保存一个默认图像,该图像是我项目包装的包装。我的项目包中的图像

这是我用来使用FileChooser保存图片的代码的一部分,我可能几乎与我一样。

String F = TxtRutaFoto.getText();
FileInputStream fis = null; 
try{
File file = new File(F);   
fis = new FileInputStream(file);
int k = JOptionPane.showConfirmDialog(null, "DESEA GUARDAR LOS DATOS DEL JUGADOR?","PREGUNTA", JOptionPane.YES_NO_OPTION);
if(k == JOptionPane.YES_OPTION){   try (
CallableStatement pstm = conexion.conectar.getConnection().prepareCall("{call INSERTARJUGADOR(?,?,?,?,?,?,?)}")
             ){
pstm.setString(1, txtID.getText());
pstm.setString(2, txt_ape_pat.getText());
pstm.setString(3, txt_ape_mat.getText());
pstm.setString(4, txt_nombre.getText());
pstm.setString(5, txt_correo.getText());
pstm.setString(6, txt_direc.getText());
pstm.setBinaryStream(7, fis, (int) file.length());
ResultSet r = pstm.executeQuery(); 

您需要在罐子中获取图片的InputStream。您可以使用方法classLoader#getResource方法来做到这一点:

String loc = getClass().getClassLoader().getResource("/path/to/resource.jpg");
InputStream is = new URL(loc).openStream();

在默认情况下您可以设置该流而不是FileInputStream。如果找不到文件,则应检查loc是否为null(有时您必须将领先的斜杠丢弃。

解决的问题我使用了此及其作品。首先,我在默认图片中创建一个"资源"文件夹。然后我只是使用了下一个代码。

File file = new File(getClass().getResource("/resources/user.jpg").getFile());
FileInputStream fis = new FileInputStream(file);

然后我只打电话给我的过程

pstm.setBinaryStream(7, fis);
ResultSet r = pstm.executeQuery();

最新更新