我正在渗透测试一个将文件上传到服务器的Java web应用程序。它使用了一个旧的库——com.jspsmart.upload.smartupload——据我所知它应该可以工作。savea方法需要保存文件的路径。我试过上传文件,但不能正常工作。我觉得问题可能出在文件路径上。如果安装目录类似于C:my_app,路径将是C:my_appuploads/filename.txt。这有关系吗?或者可能是其他原因导致它无法上传?上传代码被try/catch包围,不返回异常,所以我不确定为什么它不能工作。
我在库中找到的一些文档:http://demo.easyhis.com/jspsmartupload/help/doc/com/jspsmart/upload/File.html
示例代码:
private static string FS = System.getProperty("file.separator");
try {
myFile = myUpload.getFiles().getFile(0);
importFolder = Globals.getInstallDir() + FS + "uploads";
myFile.saveAs( importFolder + "/" + request.getParameter("import_file_name"), SmartUpload.SAVE_PHYSICAL);
} catch (Exception e) {
// outputs error
}
Java可以冷漠地使用/
或作为Windows下的文件分隔符,但它是一个或另一个-不要同时使用!
无论如何,使用Path
,你将确保你得到一个正确的路径来工作:
Paths.get(Globals.getInstallDir()).resolve(FS).resolve("uploads")
.resolve("import_file_name").toString();
注意,FS
在这里不应该是绝对的(即没有开头的/
或)。
使用File.separator。它将系统的默认路径返回到一个特定的文件分隔符。
private static string FS = File.separator;