我正在开发一个可以将某些文件上传到服务器的小型项目。我正在使用java和mysql。根据我读到的内容,“正确的方法”是将文件保存到我的服务器中的文件夹中,并将文件路径放入 mysql 中。
我的代码的一部分:
File source = new File(fileChooser.getSelectedFile().getPath());
File dest = new File(destChooser.getSelectedFile().getPath());
String tempUpdate1 = "Insert into images (ID, file_name, file_path)"
+ "VALUES ('"+ID+"' , '"+fileChooser.getSelectedFile().getName()+"' , '"+destChooser.getSelectedFile().getPath()+"')";
conn = Connect.ConnectDB();
Statement stemt2 = conn.createStatement();
stemt2.executeUpdate(tempUpdate1);
FileUtils.copyFileToDirectory(source, dest);
JOptionPane.showMessageDialog(null, "File Uploaded Successfully!");
然后我尝试运行它。它成功地将文件复制到我想要的文件夹。问题出在我的 mysql 表,我保存文件的路径。 表格是这样的:
| ID | file_name | file_path |
| 1 | sample.docx | C:UsersMEDesktopest |
| 2 | sample.jpg | C:UsersMEDesktopest |
我尝试使用 JOptionPane 自己查看文件路径的输出,它返回正常的分隔符,但使用相同的变量并将其放入 mysql 中,这就是我得到的结果,如上所示,没有分隔符。
我真的做对了吗?我按照与此相关的主题的指示进行了操作,但似乎没有人提示这条路径。我想知道是否在某个地方做错了什么。
我计划在项目进展过程中使用文件路径访问该文件。只是想询问路径文件是否可访问,因为我没有看到任何分隔符,例如“//”、“/”或“\”
最佳答案
这几乎是好的。
假设您有两个以相同方式命名的文件。您的服务器上只能拥有其中之一。我会以编码名称保存文件,例如保存操作时以米为单位的时间。
您的表将包含原始名称 sample.jpg
和文件名 49473996034732
例如(当然在单独的列中)。这样您就可以保存任意数量的 sample.jpg
。请求链接应指向文件名 49473996034732
,以便您始终知道请求的是哪个文件。
然后作为响应,当您将内容设置为正确的类型时,您可以设置用户友好的名称。
修改后的表格
| ID | file_name | server_file_name | file_path |
| 1 | sample.docx | 49473996034732 | C:UsersMEDesktopest |
| 3 | sample.jpg | 49473996034850| C:UsersMEDesktopest |
| 2 | sample.jpg | 49473996034988 | C:UsersMEDesktopest |
第二件事是我注意到您允许用户选择包含文件的目标文件夹。不应该是固定位置吗?这样它会更像服务器行为。但我猜这只是在 Swing 中快速编码的示例代码
关于java - 使用java在mysql中保存文件路径,我这样做对吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27892108/