java中怎么把文件上传到服务器的指定路径

java中怎么把文件上传到服务器的指定路径,第1张

文件从本地到服务器的功能,其实是为了解决目前浏览器不支持获取本地文件全路径。不得已而想到上传到服务器的固定目录,从而方便项目获取文件,进而使程序支持EXCEL批量导入数据。

java中文件上传到服务器的指定路径的代码:

在前台界面中输入:

<form method="post" enctype="multipart/form-data"  action="/manage/excelImportdo">

请选文件:<input type="file"  name="excelFile">

<input type="submit" value="导入" onclick="return impExcel();"/>

</form>

action中获取前台传来数据并保存

/

excel 导入文件

@return

@throws IOException

/

@RequestMapping("/usermanager/excelImportdo")

public String excelImport(

String filePath,

MultipartFile  excelFile,>

loginfo("<<<<<<action:{} Method:{} start>>>>>>","usermanager","excelImport" );

if (excelFile != null){

String filename=excelFilegetOriginalFilename();

String a=requestgetRealPath("u/cms/>

SaveFileFromInputStream(excelFilegetInputStream(),requestgetRealPath("u/cms/>

}

loginfo("<<<<<<action:{} Method:{} end>>>>>>","usermanager","excelImport" );

return "";

}

/

将MultipartFile转化为file并保存到服务器上的某地

/

public void SaveFileFromInputStream(InputStream stream,String path,String savefile) throws IOException

{    

FileOutputStream fs=new FileOutputStream( path + "/"+ savefile);

Systemoutprintln("------------"+path + "/"+ savefile);

byte[] buffer =new byte[10241024];

int bytesum = 0;

int byteread = 0;

while ((byteread=streamread(buffer))!=-1)

{

bytesum+=byteread;

fswrite(buffer,0,byteread);

fsflush();

}

fsclose();

streamclose();

}

可以直接通过流的形式上传或者下载。

import javaioFile;

import javaioFileInputStream;

import javaioFileOutputStream;

import javautilProperties;

import comjcraftjschChannel;

import comjcraftjschChannelSftp;

import comjcraftjschJSch;

import comjcraftjschSession;

import comjcraftjschSftpException;

import hkrtb2bviewutilLog;

import javautilVector;

import znccfccbutilCCFCCBUtil;

/

/

public class CCFCCBSftp {

/

连接sftp服务器

@return

/

public static ChannelSftp connect() {

ChannelSftp sftp = null;

try {

JSch jsch = new JSch();

jschgetSession(CCFCCBUtilCCFCCBHOSTNAME, CCFCCBUtilCCFCCBHOSTNAME, 22);

Session sshSession = jschgetSession(CCFCCBUtilCCFCCBLOGINNAME, CCFCCBUtilCCFCCBHOSTNAME, 22);

Systemoutprintln("Session created");

sshSessionsetPassword(CCFCCBUtilCCFCCBLOGINPASSWORD);

Properties sshConfig = new Properties();

sshConfigput("StrictHostKeyChecking", "no");

sshSessionsetConfig(sshConfig);

sshSessionconnect();

Systemoutprintln("Session connected");

Systemoutprintln("Opening Channel");

Channel channel = sshSessionopenChannel("sftp");

channelconnect();

sftp = (ChannelSftp) channel;

Systemoutprintln("Connected to " + CCFCCBUtilCCFCCBHOSTNAME + "");

} catch (Exception e) {

}

return sftp;

}

/

连接sftp服务器

@param host 主机

@param port 端口

@param username 用户名

@param password 密码

@return

/

public static ChannelSftp connect(String host, int port, String username,

String password) {

ChannelSftp sftp = null;

try {

JSch jsch = new JSch();

jschgetSession(CCFCCBUtilCCFCCBHOSTNAME, CCFCCBUtilCCFCCBHOSTNAME, 22);

Session sshSession = jschgetSession(CCFCCBUtilCCFCCBLOGINNAME, host, port);

Systemoutprintln("Session created");

sshSessionsetPassword(CCFCCBUtilCCFCCBLOGINPASSWORD);

Properties sshConfig = new Properties();

sshConfigput("StrictHostKeyChecking", "no");

sshSessionsetConfig(sshConfig);

sshSessionconnect();

Systemoutprintln("Session connected");

Systemoutprintln("Opening Channel");

Channel channel = sshSessionopenChannel("sftp");

channelconnect();

sftp = (ChannelSftp) channel;

Systemoutprintln("Connected to " + host + "");

} catch (Exception e) {

}

return sftp;

}

/

上传文件

@param directory 上传的目录

@param uploadFile 要上传的文件

@param sftp

/

public void upload(String directory, String uploadFile, ChannelSftp sftp) {

try {

sftpcd(directory);

File file = new File(uploadFile);

sftpput(new FileInputStream(file), filegetName());

} catch (Exception e) {

eprintStackTrace();

}

}

/

下载文件

@param directory 下载目录

@param downloadFile 下载的文件

@param saveFile 存在本地的路径

@param sftp

@return

/

public static String download(String directory, String downloadFile, String saveFile, ChannelSftp sftp) {

try {

sftpcd(directory);

File file = new File(saveFile);

FileOutputStream fos = new FileOutputStream(file);

sftpget(downloadFile, fos);

sftpdisconnect();

fosclose();

} catch (Exception e) {

Loginfo("下载文件过程出错:" + egetMessage());

return "false";

}

return "true";

}

/

删除文件

@param directory 要删除文件所在目录

@param deleteFile 要删除的文件

@param sftp

/

public void delete(String directory, String deleteFile, ChannelSftp sftp) {

try {

sftpcd(directory);

sftprm(deleteFile);

} catch (Exception e) {

}

}

/

列出目录下的文件

@param directory 要列出的目录

@param sftp

@return

@throws SftpException

/

public Vector listFiles(String directory, ChannelSftp sftp) throws SftpException {

return sftpls(directory);

}

public static void main(String[] args) {

CCFCCBSftp sf = new CCFCCBSftp();

String host = CCFCCBUtilCCFCCBHOSTNAME;

int port = 22;

String username = CCFCCBUtilCCFCCBLOGINNAME;

String password = CCFCCBUtilCCFCCBLOGINPASSWORD;

String directory = "/ccfccb/904999900099/download/";

//String uploadFile = "D:\\tmp\\uploadtxt";

String downloadFile = "CCF_904999900099_20150317_0001zip";

String saveFile = CCFCCBUtilCCFCCBUploadFilePath + "//" + "CCF_904999900099_20150317_0001zip";

//String deleteFile = "deletetxt";

ChannelSftp sftp = CCFCCBSftpconnect(host, port, username, password);

//sfupload(directory, uploadFile, sftp);

CCFCCBSftpdownload(directory, downloadFile, saveFile, sftp);

//sfdelete(directory, deleteFile, sftp);

try {

sftpcd(directory);

// sftpmkdir("ss");

Systemoutprintln("finished");

} catch (Exception e) {

}

}

}

我就是用sftp传输的,Android下,就是用手机录音,然后把录下来的音频文件保存到服务器里,给你源代码吧,

import javaioFile;

import javaioFileInputStream;

import javaioFileOutputStream;

import javautilDate;

import javautilProperties;

import javautilVector;

import androidcontentContext;

import androidtelephonyTelephonyManager;

import androidtextformatDateFormat;

import androidtextformatTime;

import comjcraftjschChannel;

import comjcraftjschChannelSftp;

import comjcraftjschJSch;

import comjcraftjschSession;

import comjcraftjschSftpException;

public class Sftp_upload {

 /

   连接sftp服务器

   @param host 主机

   @param port 端口

   @param username 用户名

   @param password 密码

   @return

  /

 public ChannelSftp connect(String host, int port, String username,String password) {

 

 ChannelSftp sftp = null;

  try {

   JSch jsch = new JSch();

   jschgetSession(username, host, port);

   Session sshSession = jschgetSession(username, host, port);

   Systemoutprintln("Session created");

   sshSessionsetPassword(password);

   Properties sshConfig = new Properties();

   sshConfigput("StrictHostKeyChecking", "no");

   sshSessionsetConfig(sshConfig);

   sshSessionconnect();

   Systemoutprintln("Session connected");

   Systemoutprintln("Opening Channel");

   Channel channel = sshSessionopenChannel("sftp");

   channelconnect();

   sftp = (ChannelSftp) channel;

   Systemoutprintln("Connected to " + host + "");

   //Systemoutprintln("登录成功");

  } catch (Exception e) {

  }

  return sftp;

 }

 /

   上传文件

   @param directory 上传的目录

   @param uploadFile 要上传的文件

   @param sftp

  /

 public void upload(String directory, String uploadFile, ChannelSftp sftp) {

  

 try {

   sftpcd(directory);

   File file=new File(uploadFile);

  

   String currentTime=DateFormatformat("yyyy_MM_dd_hh_mm_ss", new Date())toString(); //获取时间

   String filename=currentTime+"wav"; //文件名为当前时间来保存

   sftpput(new FileInputStream(file), filename);   

  

   Systemoutprintln("上传成功!");

} catch (Exception e) {

   eprintStackTrace();

  }

 }

 /

   下载文件

   @param directory 下载目录

   @param downloadFile 下载的文件

   @param saveFile 存在本地的路径

   @param sftp

  /

 public void download(String directory, String downloadFile,String saveFile, ChannelSftp sftp) {

  try {

   sftpcd(directory);

   File file=new File(saveFile);

   sftpget(downloadFile, new FileOutputStream(file));

  } catch (Exception e) {

   eprintStackTrace();

  }

 }

 /

   删除文件

   @param directory 要删除文件所在目录

   @param deleteFile 要删除的文件

   @param sftp

  /

 public void delete(String directory, String deleteFile, ChannelSftp sftp) {

 try {

   sftpcd(directory);

   sftprm(deleteFile);

  } catch (Exception e) {

   eprintStackTrace();

  }

 }

 /

   列出目录下的文件

   @param directory 要列出的目录

   @param sftp

   @return

   @throws SftpException

  /

 public Vector listFiles(String directory, ChannelSftp sftp) throws SftpException{

  

 return sftpls(directory);

 

 }

 

 //上传文件

 

 

 public static void Sftp_server(String file,String imsi) {

  String Imsi = imsi;  

  Sftp_upload sf = new Sftp_upload(); 

  String host = "192168160";

  int port = 22;

  String username = "root";

  String password = "123456";

  String directory = "/data/test/wav";

  //String uploadFile = "c:\\audiocheck\\testwav";

  String uploadFile = file;

 // String downloadFile = "/data/test/wav/lamesh";

// String saveFile = "c:\\audiocheck\\contenttxt";

 // String deleteFile = "c:\\audiocheck\\contenttxt";

  ChannelSftp sftp=sfconnect(host, port, username, password);

  

  //sfdownload(directory, downloadFile, saveFile, sftp);

  //sfdelete(directory, deleteFile, sftp);

   try{

   sftpcd(directory);

   sftpmkdir(Imsi); //创建目录

   Systemoutprintln("finished");

  }catch(Exception e){

  eprintStackTrace();

  }

  directory = "/data/test/wav/"+imsi;

  sfupload(directory, uploadFile, sftp);//上传文件到服务器

 

 }

 

}

这个就是源代码,

然后上传的时候用的代码

//imsi也就是 手机的型号来创建文件夹的,这些你都可以修改的。

String file = mWorkdir+"/"+"resFilewav"; //要上传的文件

Sftp_uploadSftp_server(file,imsi); //上传文件

Systemoutprintln("已上传");

纯Java通过SSH执行Linux命令的方法及代码

注:此ssh非彼SSH(Struts+Spring+Hibernate)

在Java中,我们可以通过Runtime去执行一些OS的命令,如:

String[] shell = new String[] { " /bin/sh " , " -c " , " ls -l " } ;

Process p = RuntimegetRuntime()exec(shell);

通过在Linux上执行 ssh --help命令,

usage: ssh [-1246AaCfgKkMNnqsTtVvXxY] [-b bind_address] [-c cipher_spec]

[-D [bind_address:]port] [-e escape_char] [-F configfile]

[-i identity_file] [-L [bind_address:]port:host:hostport]

[-l login_name] [-m mac_spec] [-O ctl_cmd] [-o option] [-p port]

[-R [bind_address:]port:host:hostport] [-S ctl_path]

[-w local_tun[:remote_tun]] [user@]hostname [command]

不难发现,ssh命令中并不能带密码。

如果不需要登录时,我们可以用这样的方式来执行:

String[] shell = new String[] { " /bin/sh " , " -c " , " ssh root@19216815 ls -l " } ;

Process p = RuntimegetRuntime()exec(shell);

但是事情往往并不是我们想象的如此简单,绝大部分的客户是不能允许他们的Linux中还存在一个不需要密码就能执行任何命令的帐户的。那么,在Java中就没有任何办法通过ssh登录来执行一些命令吗?

不慌,先来Google一下,从一些网上别人请教的代码的蛛丝蚂迹中,发现了JSch ( >

ChannelSftp类是JSch实现SFTP核心类,它包含了所有SFTP的方法,如:

put(): 文件上传

get(): 文件下载

cd(): 进入指定目录

ls(): 得到指定目录下的文件列表

rename(): 重命名指定文件或目录

rm(): 删除指定文件

mkdir(): 创建目录

rmdir(): 删除目录

等等(这里省略了方法的参数,put和get都有多个重载方法,具体请看源代码,这里不一一列出。)

String directory = "";

目测 /home/>

以上就是关于java中怎么把文件上传到服务器的指定路径全部的内容,包括:java中怎么把文件上传到服务器的指定路径、java 服务器与客户端的文件传输、你好!我也碰到了SFTP传输,纯java可以,Android就不行,纠结好几天了,希望你能尽快帮我解答,谢谢!等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址: http://outofmemory.cn/web/9559810.html

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

发表评论

登录后才能评论

评论列表(0条)

保存