
method 方法里面写后台的控制类上传方法,方法里面能够获取该文件,然后以流的方式写入到指定文件夹下的某个文件中。
参考下这个网页链接
<form method="post" action="/TomcatTest/UploadServlet" enctype="multipart/form-data">
enctype="multipart/form-data" 这个必须要写,action后台接收的方法,文件保存路径在控制器中可以自己随便指定。
分类: 电脑/网络 >> 程序设计 >> 其他编程语言
问题描述:
String titlePath = null;
String recPath = null;
String templatePath = null;
String replacePath = null;
SecHandAnalyse yse = new SecHandAnalyse();
titlePath = "/conf/sechand/naalee/titleconf";
recPath = "F:\\naaleerec";
templatePath= "/conf/sechand/naalee/templateconf";
replacePath= "/conf/sechand/naalee/replaceconf";
有办法能使它只需要通过一个路径就找到其它3个的。CONF文件吗?`````
解析:
可以的 采用 File 类 和 FileFilter 接口:
public static void main(String args[]){
File directory = new File("/conf/sechand/naalee/");
Systemoutprintln(directoryisDirectory());
File[] fileList = directorylistFiles(new javaioFileFilter() {
public boolean accept(File file) {
if(filegetName()endsWith("conf")) return true;
else return false;
}});
for (File file : fileList) {
Systemoutprintln(filegetPath());
}
}
拿去用吧。
package comweixinutil;import javaioFile;
import javaioFileOutputStream;
import javaioIOException;
import javaioInputStream;
import javaioOutputStream;
import javaioPrintWriter;
import javaioRandomAccessFile;
import orgapachecommonsnetPrintCommandListener;
import orgapachecommonsnetftpFTP;
import orgapachecommonsnetftpFTPClient;
import orgapachecommonsnetftpFTPFile;
import orgapachecommonsnetftpFTPReply;
import comweixinconstantDownloadStatus;
import comweixinconstantUploadStatus;
/
支持断点续传的FTP实用类
@version 01 实现基本断点上传下载
@version 02 实现上传下载进度汇报
@version 03 实现中文目录创建及中文文件创建,添加对于中文的支持
/
public class ContinueFTP {
public FTPClient ftpClient = new FTPClient();
public ContinueFTP(){
//设置将过程中使用到的命令输出到控制台
thisftpClientaddProtocolCommandListener(new PrintCommandListener(new PrintWriter(Systemout)));
}
/
连接到FTP服务器
@param hostname 主机名
@param port 端口
@param username 用户名
@param password 密码
@return 是否连接成功
@throws IOException
/
public boolean connect(String hostname,int port,String username,String password) throws IOException{
ftpClientconnect(hostname, port);
ftpClientsetControlEncoding("GBK");
if(FTPReplyisPositiveCompletion(ftpClientgetReplyCode())){
if(ftpClientlogin(username, password)){
return true;
}
}
disconnect();
return false;
}
/
从FTP服务器上下载文件,支持断点续传,上传百分比汇报
@param remote 远程文件路径
@param local 本地文件路径
@return 上传的状态
@throws IOException
/
public DownloadStatus download(String remote,String local) throws IOException{
//设置被动模式
ftpCliententerLocalPassiveMode();
//设置以二进制方式传输
ftpClientsetFileType(FTPBINARY_FILE_TYPE);
DownloadStatus result;
//检查远程文件是否存在
FTPFile[] files = ftpClientlistFiles(new String(remotegetBytes("GBK"),"iso-8859-1"));
if(fileslength != 1){
Systemoutprintln("远程文件不存在");
return DownloadStatusRemote_File_Noexist;
}
long lRemoteSize = files[0]getSize();
File f = new File(local);
//本地存在文件,进行断点下载
if(fexists()){
long localSize = flength();
//判断本地文件大小是否大于远程文件大小
if(localSize >= lRemoteSize){
Systemoutprintln("本地文件大于远程文件,下载中止");
return DownloadStatusLocal_Bigger_Remote;
}
//进行断点续传,并记录状态
FileOutputStream out = new FileOutputStream(f,true);
ftpClientsetRestartOffset(localSize);
InputStream in = ftpClientretrieveFileStream(new String(remotegetBytes("GBK"),"iso-8859-1"));
byte[] bytes = new byte[1024];
long step = lRemoteSize /100;
long process=localSize /step;
int c;
while((c = inread(bytes))!= -1){
outwrite(bytes,0,c);
localSize+=c;
long nowProcess = localSize /step;
if(nowProcess > process){
process = nowProcess;
if(process % 10 == 0)
Systemoutprintln("下载进度:"+process);
//TODO 更新文件下载进度,值存放在process变量中
}
}
inclose();
outclose();
boolean isDo = ftpClientcompletePendingCommand();
if(isDo){
result = DownloadStatusDownload_From_Break_Success;
}else {
result = DownloadStatusDownload_From_Break_Failed;
}
}else {
OutputStream out = new FileOutputStream(f);
InputStream in= ftpClientretrieveFileStream(new String(remotegetBytes("GBK"),"iso-8859-1"));
byte[] bytes = new byte[1024];
long step = lRemoteSize /100;
long process=0;
long localSize = 0L;
int c;
while((c = inread(bytes))!= -1){
outwrite(bytes, 0, c);
localSize+=c;
long nowProcess = localSize /step;
if(nowProcess > process){
process = nowProcess;
if(process % 10 == 0)
Systemoutprintln("下载进度:"+process);
//TODO 更新文件下载进度,值存放在process变量中
}
}
inclose();
outclose();
boolean upNewStatus = ftpClientcompletePendingCommand();
if(upNewStatus){
result = DownloadStatusDownload_New_Success;
}else {
result = DownloadStatusDownload_New_Failed;
}
}
return result;
}
/
上传文件到FTP服务器,支持断点续传
@param local 本地文件名称,绝对路径
@param remote 远程文件路径,使用/home/directory1/subdirectory/fileext 按照Linux上的路径指定方式,支持多级目录嵌套,支持递归创建不存在的目录结构
@return 上传结果
@throws IOException
/
public UploadStatus upload(String local,String remote) throws IOException{
//设置PassiveMode传输
ftpCliententerLocalPassiveMode();
//设置以二进制流的方式传输
ftpClientsetFileType(FTPBINARY_FILE_TYPE);
ftpClientsetControlEncoding("GBK");
UploadStatus result;
//对远程目录的处理
String remoteFileName = remote;
if(remotecontains("/")){
remoteFileName = remotesubstring(remotelastIndexOf("/")+1);
//创建服务器远程目录结构,创建失败直接返回
if(CreateDirecroty(remote, ftpClient)==UploadStatusCreate_Directory_Fail){
return UploadStatusCreate_Directory_Fail;
}
}
//检查远程是否存在文件
FTPFile[] files = ftpClientlistFiles(new String(remoteFileNamegetBytes("GBK"),"iso-8859-1"));
if(fileslength == 1){
long remoteSize = files[0]getSize();
File f = new File(local);
long localSize = flength();
if(remoteSize==localSize){
return UploadStatusFile_Exits;
}else if(remoteSize > localSize){
return UploadStatusRemote_Bigger_Local;
}
//尝试移动文件内读取指针,实现断点续传
result = uploadFile(remoteFileName, f, ftpClient, remoteSize);
//如果断点续传没有成功,则删除服务器上文件,重新上传
if(result == UploadStatusUpload_From_Break_Failed){
if(!ftpClientdeleteFile(remoteFileName)){
return UploadStatusDelete_Remote_Faild;
}
result = uploadFile(remoteFileName, f, ftpClient, 0);
}
}else {
result = uploadFile(remoteFileName, new File(local), ftpClient, 0);
}
return result;
}
/
断开与远程服务器的连接
@throws IOException
/
public void disconnect() throws IOException{
if(ftpClientisConnected()){
ftpClientdisconnect();
}
}
/
递归创建远程服务器目录
@param remote 远程服务器文件绝对路径
@param ftpClient FTPClient对象
@return 目录创建是否成功
@throws IOException
/
public UploadStatus CreateDirecroty(String remote,FTPClient ftpClient) throws IOException{
UploadStatus status = UploadStatusCreate_Directory_Success;
String directory = remotesubstring(0,remotelastIndexOf("/")+1);
if(!directoryequalsIgnoreCase("/")&&!ftpClientchangeWorkingDirectory(new String(directorygetBytes("GBK"),"iso-8859-1"))){
//如果远程目录不存在,则递归创建远程服务器目录
int start=0;
int end = 0;
if(directorystartsWith("/")){
start = 1;
}else{
start = 0;
}
end = directoryindexOf("/",start);
while(true){
String subDirectory = new String(remotesubstring(start,end)getBytes("GBK"),"iso-8859-1");
if(!ftpClientchangeWorkingDirectory(subDirectory)){
if(ftpClientmakeDirectory(subDirectory)){
ftpClientchangeWorkingDirectory(subDirectory);
}else {
Systemoutprintln("创建目录失败");
return UploadStatusCreate_Directory_Fail;
}
}
start = end + 1;
end = directoryindexOf("/",start);
//检查所有目录是否创建完毕
if(end <= start){
break;
}
}
}
return status;
}
/
上传文件到服务器,新上传和断点续传
@param remoteFile 远程文件名,在上传之前已经将服务器工作目录做了改变
@param localFile 本地文件File句柄,绝对路径
@param processStep 需要显示的处理进度步进值
@param ftpClient FTPClient引用
@return
@throws IOException
/
public UploadStatus uploadFile(String remoteFile,File localFile,FTPClient ftpClient,long remoteSize) throws IOException{
UploadStatus status;
//显示进度的上传
long step = localFilelength() / 100;
long process = 0;
long localreadbytes = 0L;
RandomAccessFile raf = new RandomAccessFile(localFile,"r");
OutputStream out = ftpClientappendFileStream(new String(remoteFilegetBytes("GBK"),"iso-8859-1"));
//断点续传
if(remoteSize>0){
ftpClientsetRestartOffset(remoteSize);
process = remoteSize /step;
rafseek(remoteSize);
localreadbytes = remoteSize;
}
byte[] bytes = new byte[1024];
int c;
while((c = rafread(bytes))!= -1){
outwrite(bytes,0,c);
localreadbytes+=c;
if(localreadbytes / step != process){
process = localreadbytes / step;
Systemoutprintln("上传进度:" + process);
//TODO 汇报上传状态
}
}
outflush();
rafclose();
outclose();
boolean result =ftpClientcompletePendingCommand();
if(remoteSize > 0){
status = resultUploadStatusUpload_From_Break_Success:UploadStatusUpload_From_Break_Failed;
}else {
status = resultUploadStatusUpload_New_File_Success:UploadStatusUpload_New_File_Failed;
}
return status;
}
public static void main(String[] args) {
ContinueFTP myFtp = new ContinueFTP();
try {
Systemerrprintln(myFtpconnect("10106236", 21, "5", "jieyan"));
// myFtpftpClientmakeDirectory(new String("歌曲"getBytes("GBK"),"iso-8859-1"));
// myFtpftpClientchangeWorkingDirectory(new String("歌曲"getBytes("GBK"),"iso-8859-1"));
// myFtpftpClientmakeDirectory(new String("爱你等于爱自己"getBytes("GBK"),"iso-8859-1"));
// Systemoutprintln(myFtpupload("E:\\ywflv", "/ywflv",5));
// Systemoutprintln(myFtpupload("E:\\爱你等于爱自己mp4","/爱你等于爱自己mp4"));
//Systemoutprintln(myFtpdownload("/爱你等于爱自己mp4", "E:\\爱你等于爱自己mp4"));
myFtpdisconnect();
} catch (IOException e) {
Systemoutprintln("连接FTP出错:"+egetMessage());
}
}
}
String newFilePath = "new Path" + "\\" + newfilegetFileName;
File file = new File(String newFilePath);
//新建一个Smartupload对象
SmartUpload su=new SmartUpload();
//上传初始化
suinitialize(pageContext);
//设定上传限度
//1限定每个上传文件的最大长度
//susetMaxFileSize(100000);
//2限制总上传数据的长度。
//susetTotalMaxFileSize(20000);
//3设定允许上传的文件(通过扩展名限制),仅允许doc,txt文件。
//susetAllowFilesList("doc,text");
//4设定禁止上传的文件(通过扩展名限制),禁止上传带有exe,bat,jsp,htm,html扩展名的文件或没有扩展名的文件
//susetDeniedDilesList("exe,bat,jsp,html,htm,,");
//上传文件
suupload();
//将上传文件全部保存到指定目录
int count=susave("/upload");
outprintln(count+"个上传文件成功!<br>");
//利用Request对象获取参数之值
outprintln("test="+sugetRequest()getParameter("test")+"<br><br>");
//逐一提取上传文件信息,同时可保存文件。
for(int i=0;i<sugetFiles()getCount();i++)
{
comjspsmartuploadFile file=sugetFiles()getFile(i);
//若文件不存在则继续
if(fileisMissing())
continue;
//显示当前文件信息
outprintln("<table border=1>");
outprintln("<tr><td>表单项名(FiledName)</td><td>"+filegetFieldName()+"</tr></tr>");
outprintln("<tr><td>文件长度(Size)</td><td>"+filegetSize()+"</td><td>");
outprintln("<tr><td>文件名(FileName)</td><td>"+filegetFileName()+"</tr></tr>");
outprintln("<tr><td>文件扩展名(FiledExt)</td><td>"+filegetFileExt()+"</tr></tr>");
outprintln("<tr><td>文件全名(FiledPathName)</td><td>"+filegetFilePathName()+"</tr></tr>");
outprintln("</table><br>");
//将文件另存
//filesaveAs("/upload/"+myFilegetFileName());
//另存到以web应用程序的根目录为文件根目录的目录下
//filesaveAs("/upload/"+myFilegetFileName(),suSAVE_VIRTUAL);
//另存到 *** 作系统的根目录为文件根目录的目录下
//filesafeAs("c://temp//"+myFilegetFileName(),suSAVE_PHYSICAL);
}
上面就是了。。。。祝你好运哈!
File f = new File(thisgetClass()getResource("")getPath());
Systemoutprintln(f);结果:C:\Documents%20and%20Settings\Administrator\workspace\projectName\bin\com\test
获取当前类的绝对路径;第二种:File directory = new File("");//参数为空
String courseFile = directorygetCanonicalPath() ;
Systemoutprintln(courseFile);结果:C:\Documents and Settings\Administrator\workspace\projectName
获取当前类的所在工程路径;第三种:URL xmlpath = thisgetClass()getClassLoader()getResource("selectedtxt");
Systemoutprintln(xmlpath);结果:file:/C:/Documents%20and%20Settings/Administrator/workspace/projectName/bin/selectedtxt
获取当前工程src目录下selectedtxt文件的路径第四种:Systemoutprintln(SystemgetProperty("userdir"));结果:C:\Documents and Settings\Administrator\workspace\projectName
获取当前工程路径第五种:Systemoutprintln( SystemgetProperty("javaclasspath"));结果:C:\Documents and Settings\Administrator\workspace\projectName\bin获取当前工程路径
以上就是关于java jsp 文件(图片)上传 存储路径全部的内容,包括:java jsp 文件(图片)上传 存储路径、如何java获取路径`、java 怎么从ftp获取文件路径等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)