首页服务器java文件服务器,如何将Java文件上传到指定服务器上

java文件服务器,如何将Java文件上传到指定服务器上

编程之家2023-10-22105次浏览

很多朋友对于java文件服务器和如何将Java文件上传到指定服务器上不太懂,今天就由小编来为大家分享,希望可以帮助到大家,下面一起来看看吧!

java文件服务器,如何将Java文件上传到指定服务器上

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

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

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

在前台界面中输入:

<form method="post" enctype="multipart/form-data" action="../manage/excelImport.do">

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

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

java文件服务器,如何将Java文件上传到指定服务器上

</form>

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

/**

* excel导入文件

*@return

*@throws IOException

java文件服务器,如何将Java文件上传到指定服务器上

*/

@RequestMapping("/usermanager/excelImport.do")

public String excelImport(

String filePath,

MultipartFile excelFile,HttpServletRequest request) throws IOException{

log.info("<<<<<<action:{} Method:{} start>>>>>>","usermanager","excelImport");

if(excelFile!= null){

String filename=excelFile.getOriginalFilename();

String a=request.getRealPath("u/cms/www/201509");

SaveFileFromInputStream(excelFile.getInputStream(),request.getRealPath("u/cms/www/201509"),filename);//保存到服务器的路径

}

log.info("<<<<<<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);

System.out.println("------------"+path+"/"+ savefile);

byte[] buffer=new byte[1024*1024];

int bytesum= 0;

int byteread= 0;

while((byteread=stream.read(buffer))!=-1)

{

bytesum+=byteread;

fs.write(buffer,0,byteread);

fs.flush();

}

fs.close();

stream.close();

}

如何将Java文件上传到指定服务器上

要将Java文件上传到指定服务器,可以使用以下步骤:

使用Java中的Socket类或Java NIO(New IO)库来建立网络连接。

在连接上发送文件,可以使用Java中的FileInputStream或FileReader类从本地文件系统读取文件内容,然后使用OutputStream或Writer类将文件内容写入网络连接。

在服务器端,使用Java中的ServerSocket类或Java NIO库来接收网络连接。

在服务器端,读取网络连接中的文件内容,可以使用Java中的InputStream或Reader类从网络连接中读取文件内容,然后使用Java中的FileOutputStream或FileWriter类将文件内容写入服务器本地文件系统。

关闭网络连接和文件流。

需要注意的是,要确保服务器端有足够的权限来访问文件系统,并且要正确处理文件名和路径,以避免安全问题和文件冲突。

java中如何实现从客户端发送文件到服务器端

服务器端源码:\x0d\x0aimport java.io.BufferedReader;\x0d\x0aimport java.io.File;\x0d\x0aimport java.io.FileNotFoundException;\x0d\x0aimport java.io.FileOutputStream;\x0d\x0aimport java.io.IOException;\x0d\x0aimport java.io.InputStream;\x0d\x0aimport java.io.InputStreamReader;\x0d\x0aimport java.net.ServerSocket;\x0d\x0aimport java.net.Socket;\x0d\x0a\x0d\x0a/**\x0d\x0a*\x0d\x0a*文件名:ServerReceive.java\x0d\x0a*实现功能:作为服务器接收客户端发送的文件\x0d\x0a*\x0d\x0a*具体实现过程:\x0d\x0a* 1、建立SocketServer,等待客户端的连接\x0d\x0a* 2、当有客户端连接的时候,按照双方的约定,这时要读取一行数据\x0d\x0a*其中保存客户端要发送的文件名和文件大小信息\x0d\x0a* 3、根据文件名在本地创建文件,并建立好流通信\x0d\x0a* 4、循环接收数据包,将数据包写入文件\x0d\x0a* 5、当接收数据的长度等于提前文件发过来的文件长度,即表示文件接收完毕,关闭文件\x0d\x0a* 6、文件接收工作结束\x0d\x0a\x0d\x0apublic class ServerReceive{\x0d\x0a \x0d\x0a public static void main(String[] args){\x0d\x0a \x0d\x0a/**与服务器建立连接的通信句柄*/\x0d\x0a ServerSocket ss= null;\x0d\x0a Socket s= null;\x0d\x0a \x0d\x0a/**定义用于在接收后在本地创建的文件对象和文件输出流对象*/\x0d\x0a File file= null;\x0d\x0a FileOutputStream fos= null;\x0d\x0a \x0d\x0a/**定义输入流,使用socket的inputStream对数据包进行输入*/\x0d\x0a InputStream is= null;\x0d\x0a \x0d\x0a/**定义byte数组来作为数据包的存储数据包*/\x0d\x0a byte[] buffer= new byte[4096* 5];\x0d\x0a \x0d\x0a/**用来接收文件发送请求的字符串*/\x0d\x0a String comm= null;\x0d\x0a\x0d\x0a/**建立socekt通信,等待服务器进行连接*/\x0d\x0a try{\x0d\x0a ss= new ServerSocket(4004);\x0d\x0a s= ss.accept();\x0d\x0a} catch(IOException e){\x0d\x0a e.printStackTrace();\x0d\x0a}\x0d\x0a\x0d\x0a/**读取一行客户端发送过来的约定信息*/\x0d\x0a try{\x0d\x0a InputStreamReader isr= new InputStreamReader(s.getInputStream());\x0d\x0a BufferedReader br= new BufferedReader(isr);\x0d\x0a comm= br.readLine();\x0d\x0a} catch(IOException e){\x0d\x0a System.out.println("服务器与客户端断开连接");\x0d\x0a}\x0d\x0a \x0d\x0a/**开始解析客户端发送过来的请求命令*/\x0d\x0a int index= comm.indexOf("/#");\x0d\x0a \x0d\x0a/**判断协议是否为发送文件的协议*/\x0d\x0a String xieyi= comm.substring(0, index);\x0d\x0a if(!xieyi.equals("111")){\x0d\x0a System.out.println("服务器收到的协议码不正确");\x0d\x0a return;\x0d\x0a}\x0d\x0a \x0d\x0a/**解析出文件的名字和大小*/\x0d\x0a comm= comm.substring(index+ 2);\x0d\x0a index= comm.indexOf("/#");\x0d\x0a String filename= comm.substring(0, index).trim();\x0d\x0a String filesize= comm.substring(index+ 2).trim();\x0d\x0a\x0d\x0a/**创建空文件,用来进行接收文件*/\x0d\x0a file= new File(filename);\x0d\x0a if(!file.exists()){\x0d\x0a try{\x0d\x0a file.createNewFile();\x0d\x0a} catch(IOException e){\x0d\x0a System.out.println("服务器端创建文件失败");\x0d\x0a}\x0d\x0a}else{\x0d\x0a/**在此也可以询问是否覆盖*/\x0d\x0a System.out.println("本路径已存在相同文件,进行覆盖");\x0d\x0a}\x0d\x0a \x0d\x0a/**【以上就是客户端代码中写到的服务器的准备部分】*/\x0d\x0a\x0d\x0a/**\x0d\x0a*服务器接收文件的关键代码*/\x0d\x0a try{\x0d\x0a/**将文件包装到文件输出流对象中*/\x0d\x0a fos= new FileOutputStream(file);\x0d\x0a long file_size= Long.parseLong(filesize);\x0d\x0a is= s.getInputStream();\x0d\x0a/**size为每次接收数据包的长度*/\x0d\x0a int size= 0;\x0d\x0a/**count用来记录已接收到文件的长度*/\x0d\x0a long count= 0;\x0d\x0a \x0d\x0a/**使用while循环接收数据包*/\x0d\x0a while(count< file_size){\x0d\x0a/**从输入流中读取一个数据包*/\x0d\x0a size= is.read(buffer);\x0d\x0a \x0d\x0a/**将刚刚读取的数据包写到本地文件中去*/\x0d\x0a fos.write(buffer, 0, size);\x0d\x0a fos.flush();\x0d\x0a \x0d\x0a/**将已接收到文件的长度+size*/\x0d\x0a count+= size;\x0d\x0a System.out.println("服务器端接收到数据包,大小为"+ size);\x0d\x0a}\x0d\x0a \x0d\x0a} catch(FileNotFoundException e){\x0d\x0a System.out.println("服务器写文件失败");\x0d\x0a} catch(IOException e){\x0d\x0a System.out.println("服务器:客户端断开连接");\x0d\x0a}finally{\x0d\x0a/**\x0d\x0a*将打开的文件关闭\x0d\x0a*如有需要,也可以在此关闭socket连接\x0d\x0a**/\x0d\x0a try{\x0d\x0a if(fos!= null)\x0d\x0a fos.close();\x0d\x0a} catch(IOException e){\x0d\x0a e.printStackTrace();\x0d\x0a}//catch(IOException e)\x0d\x0a}//finally\x0d\x0a \x0d\x0a}//public static void main(String[] args)\x0d\x0a}//public class ServerReceive\x0d\x0a\x0d\x0a客户端源码:\x0d\x0a\x0d\x0aimport java.io.File;\x0d\x0aimport java.io.FileInputStream;\x0d\x0aimport java.io.FileNotFoundException;\x0d\x0aimport java.io.IOException;\x0d\x0aimport java.io.OutputStream;\x0d\x0aimport java.io.PrintStream;\x0d\x0aimport java.net.Socket;\x0d\x0a\x0d\x0a/**\x0d\x0a*\x0d\x0a*文件名:ClientSend.java\x0d\x0a*实现功能:作为客户端向服务器发送一个文件\x0d\x0a*\x0d\x0a*具体实现过程:\x0d\x0a* 1、建立与服务器端的连接,IP:127.0.0.1, port:4004\x0d\x0a* 2、将文件的名字和大小通过自定义的文件传输协议,发送到服务器\x0d\x0a* 3、循环读取本地文件,将文件打包发送到数据输出流中\x0d\x0a* 4、关闭文件,结束传输\x0d\x0a*\x0d\x0a**/\x0d\x0a \x0d\x0apublic class ClientSend{\x0d\x0a \x0d\x0a public static void main(String[] args){\x0d\x0a \x0d\x0a/**与服务器建立连接的通信句柄*/\x0d\x0a Socket s= null;\x0d\x0a \x0d\x0a/**定义文件对象,即为要发送的文件\x0d\x0a*如果使用绝对路径,不要忘记使用'/'和'\'的区别\x0d\x0a*具体区别,请读者自行查询\x0d\x0a**/\x0d\x0a File sendfile= new File("API.CHM");\x0d\x0a/**定义文件输入流,用来打开、读取即将要发送的文件*/\x0d\x0a FileInputStream fis= null;\x0d\x0a/**定义byte数组来作为数据包的存储数据包*/\x0d\x0a byte[] buffer= new byte[4096* 5];\x0d\x0a \x0d\x0a/**定义输出流,使用socket的outputStream对数据包进行输出*/\x0d\x0a OutputStream os= null;\x0d\x0a\x0d\x0a/**检查要发送的文件是否存在*/\x0d\x0a if(!sendfile.exists()){\x0d\x0a System.out.println("客户端:要发送的文件不存在");\x0d\x0a return;\x0d\x0a}\x0d\x0a\x0d\x0a/**与服务器建立连接*/\x0d\x0a try{\x0d\x0a s= new Socket("127.0.0.1", 4004);\x0d\x0a}catch(IOException e){\x0d\x0a System.out.println("未连接到服务器");\x0d\x0a}\x0d\x0a \x0d\x0a/**用文件对象初始化fis对象\x0d\x0a*以便于可以提取出文件的大小\x0d\x0a**/\x0d\x0a try{\x0d\x0a fis= new FileInputStream(sendfile);\x0d\x0a} catch(FileNotFoundException e1){\x0d\x0a e1.printStackTrace();\x0d\x0a}\x0d\x0a\x0d\x0a/**首先先向服务器发送关于文件的信息,以便于服务器进行接收的相关准备工作\x0d\x0a*具体的准备工作,请查看服务器代码。\x0d\x0a*\x0d\x0a*发送的内容包括:发送文件协议码(此处为111)/#文件名(带后缀名)/#文件大小\x0d\x0a**/\x0d\x0a try{\x0d\x0a PrintStream ps= new PrintStream(s.getOutputStream());\x0d\x0a ps.println("111/#"+ sendfile.getName()+"/#"+ fis.available());\x0d\x0a ps.flush();\x0d\x0a} catch(IOException e){\x0d\x0a System.out.println("服务器连接中断");\x0d\x0a}\x0d\x0a\x0d\x0a/**\x0d\x0a*此处睡眠2s,等待服务器把相关的工作准备好\x0d\x0a*也是为了保证网络的延迟\x0d\x0a*读者可自行选择添加此代码\x0d\x0a**/\x0d\x0a try{\x0d\x0a Thread.sleep(2000);\x0d\x0a} catch(InterruptedException e1){\x0d\x0a e1.printStackTrace();\x0d\x0a}\x0d\x0a\x0d\x0a/**之前的准备工作结束之后\x0d\x0a*下面就是文件传输的关键代码\x0d\x0a**/\x0d\x0a try{\x0d\x0a \x0d\x0a/**获取socket的OutputStream,以便向其中写入数据包*/\x0d\x0a os= s.getOutputStream();\x0d\x0a \x0d\x0a/** size用来记录每次读取文件的大小*/\x0d\x0a int size= 0;\x0d\x0a \x0d\x0a/**使用while循环读取文件,直到文件读取结束*/\x0d\x0a while((size= fis.read(buffer))!=-1){\x0d\x0a System.out.println("客户端发送数据包,大小为"+ size);\x0d\x0a/**向输出流中写入刚刚读到的数据包*/\x0d\x0a os.write(buffer, 0, size);\x0d\x0a/**刷新一下*/\x0d\x0a os.flush();\x0d\x0a}\x0d\x0a} catch(FileNotFoundException e){\x0d\x0a System.out.println("客户端读取文件出错");\x0d\x0a} catch(IOException e){\x0d\x0a System.out.println("客户端输出文件出错");\x0d\x0a}finally{\x0d\x0a \x0d\x0a/**\x0d\x0a*将打开的文件关闭\x0d\x0a*如有需要,也可以在此关闭socket连接\x0d\x0a**/\x0d\x0a try{\x0d\x0a if(fis!= null)\x0d\x0a fis.close();\x0d\x0a} catch(IOException e){\x0d\x0a System.out.println("客户端文件关闭出错");\x0d\x0a}//catch(IOException e)\x0d\x0a}//finally\x0d\x0a \x0d\x0a}//public static void main(String[] args)\x0d\x0a}//public class ClientSend

好了,文章到这里就结束啦,如果本次分享的java文件服务器和如何将Java文件上传到指定服务器上问题对您有所帮助,还望关注下本站哦!

网站 服务器?服务器和网站有什么区别呢成都惠普服务器?惠普中低端的服务器和其它厂家相比有那些优势