上传文件时服务器路径问题

在上传文件到服务器上时,上传到服务器的文件不能在指定目录下获取,主要是在java代码中设置的文件路径问题。

一. 获取本地路径的几种方式

1.项目目录下建立excel文件夹存入上传文件

   得到当前的classpath的绝对路径的URI表示法。

		String serverPath=Thread.currentThread().getContextClassLoader().getResource("").toString();
		serverPath=serverPath.replace('/', '\\'); 
		serverPath=serverPath.replace("file:", ""); 
		serverPath=serverPath.replace("classes\\", "");   
		serverPath=serverPath.replace("target\\", ""); 
		serverPath+= "excel" + File.separator+"统计.xlsx";  

2.获得用户的根目录

默认定位到的当前用户目录("user.dir")(即工程根目录)
JVM就可以据"user.dir" + "你自己设置的目录" 得到完整的路径(即绝对路径)
但是工程必须不是web项目,不然,这个返回值就不是项目的根目录啦,而是tomcat的bin目录。

String serverPath=System.getProperty("user.dir");
     serverPath+= "/excel/"+"工时明细表.xlsx"; 


二.获取服务器路径

 		 String serverPath = request.getServletContext().getRealPath("/excel/");
 		      serverPath+="统计.xlsx";
  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
要将文件Java上传到Linux服务器的指定路径,可以使用SSH(Secure Shell)库和协议进行远程连接和文件传输。下面是一个简单的示例代码,展示了如何使用JSch库在Java中进行文件上传: ```java import com.jcraft.jsch.*; public class FileUploader { public static void main(String[] args) { String hostname = "服务器地址"; int port = 22; String username = "登录用户名"; String password = "登录密码"; String localFilePath = "本地文件路径"; String remoteDirectory = "远程服务器上的目标文件路径"; JSch jsch = new JSch(); try { Session session = jsch.getSession(username, hostname, port); session.setConfig("StrictHostKeyChecking", "no"); session.setPassword(password); session.connect(); Channel channel = session.openChannel("sftp"); channel.connect(); ChannelSftp sftpChannel = (ChannelSftp) channel; sftpChannel.cd(remoteDirectory); // 切换到远程服务器上的目标文件路径 sftpChannel.put(localFilePath, ""); // 将本地文件上传到指定路径,指定空字符串表示保持原有文件名 sftpChannel.disconnect(); session.disconnect(); System.out.println("文件上传成功!"); } catch (JSchException | SftpException e) { e.printStackTrace(); } } } ``` 在上述代码中,你需要将代码中的服务器地址、登录用户名、登录密码、本地文件路径以及远程服务器上的目标文件路径替换为你自己的实际设置。 这个例子使用JSch库建立与远程服务器的SSH连接,并使用SFTP协议进行文件传输。首先,通过创建一个Session对象,设置登录用户名、服务器地址和端口号,并使用密码进行身份验证。然后,打开一个sftp通道,连接到远程服务器。通过调用cd()方法切换到目标文件路径。最后,使用put()方法将本地文件上传到指定的远程路径。完成后,断开sftp通道和SSH会话。 希望这个示例能对你有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

纯洁的小魔鬼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值