jspSmartUpload上传的路径问题

左丘阳晖
2023-12-01

转载自:https://www.cnblogs.com/losesea/articles/3417800.html

看看下面怎么解释saveAs第二个参数;例子讲的很清楚。 
======================== 
注意有红色和蓝色的语句,现在你的情况就是红色语句的情况,蓝色语句解释了为什么。 
============================== 

       Files类中的saveAs()方法用于保存文件,在File类中提供了两种形式的saveAs()方法: 

saveAs(String destFilePathName)方法。  

saveAs(String destFilePathName, int optionSaveAs)方法。  

       这两个方法没有返回值,第一种形式与saveAs(destFilePathName, 0)执行效果相同。 
       参数说明 :
       l  destFilePathName:指定文件保存的路径,包括文件名。其值应以“/”开头。 
       l  optionSaveAs:保存目标选项。该选项有3个值,分别是SAVEAS_AUTO、SAVEAS_VIRTUALSAVEAS_PHYSICAL它们是File类中的静态字段,分别表示整数 0 、1 、2。将optionSaveAs参数设为SAVEAS_VIRTUAL选项值,则通知jspSmartUpload组件以Web应用的根目录为文件根目录,然后加上destFilePathName参数指定的路径来保存文件;设为SAVEAS_PHYSICAL值,则一种情况是通知jspSmartUpload组件将以Web服务器的安装路径中的磁盘根目录为文件根目录,然后加上destFilePathName参数指定的路径来保存文件,另一种情况则以destFilePathName参数指定的目录为最终目录来保存文件;设为SAVEAS_AUTO值,则首先以SAVEAS_VIRTUAL方式来保存文件,若Web应用下由destFilePathName参数指定的路径不存在,则以SAVEAS_PHYSICAL方式保存文件。 

       例如,若Web服务器(以Tomcat为例)的安装目录为“E:\Tomcat 5.5”,当前Web应用为“FileUpDown”,下面分别应用这3个选项保存文件。 

   (1)使用SAVEAS_VIRTUAL选项值。 

saveAs("/file/myfile.txt",File.SAVEAS_VIRTUAL)或saveAs("/file/myfile.txt",1) 

        若FileUpDown应用下存在“file”子目录,则将上传的文件以“myfile.txt”为文件名进行保存,实际的保存路径如下: 

E:\Tomcat 5.5\webapps\FileUpDown\file\myfile.txt 

        若不存在“file”子目录,则抛出下面的异常: 

This path does not exist (1135) 


   (2)使用SAVEAS_PHYSICAL选项值。 

saveAs("/file/myfile.txt",File.SAVEAS_PHYSICAL)或saveAs("/file/myfile.txt",2) 

       因为Tomcat 5.5安装在E盘,因此若E盘根目录下存在“file”子目录,则将上传的文件以“myfile.txt”为文件名进行保存,实际的保存路径如下: 

E:\file\myfile.txt 

       若E盘根目录下不存在“file”子目录,而FileUpDown应用的根目录下存在“file”子目录,则抛出下面的异常: 
 

The path is not a physical path 

       否则抛出下面的异常: 

This path does not exist (1135) 

       使用SAVEAS_PHYSICAL选项值时,可以将上传的文件保存到由destFilePathName参数指定的一个具体的目录下,例如: 

saveAs("D:/temp/myfile.txt",File.SAVEAS_PHYSICAL) 

       最终文件的实际保存路径如下: 

D:\temp\myfile.txt 


   (3)使用SAVEAS_AUTO选项值。 

saveAs("/file/myfile.txt",File.SAVEAS_AUTO)或saveAs("/file/myfile.txt",0) 

       若FileUpDown应用根目录下存在“file”子目录,则以SAVEAS_VIRTUAL方式保存文件,否则以SAVEAS_PHYSICAL方式保存文件。 

       通常情况下应使用SAVEAS_VIRTUAL方式保存文件,以便程序的移植。 

 类似资料: