文件分隔符对Java文件路径重要吗?



我正在渗透测试一个将文件上传到服务器的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;

相关内容

  • 没有找到相关文章

最新更新