java jsp 文件(图片)上传 存储路径

java jsp 文件(图片)上传 存储路径,第1张

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获取文件路径等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/web/9526333.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-29
下一篇2023-04-29

发表评论

登录后才能评论

评论列表(0条)

    保存