导航:首页 > 配服务器 > java如何将文件上传到服务器

java如何将文件上传到服务器

发布时间:2023-06-07 13:17:05

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

BufferedInputStream bis = new BufferedInputStream( new FileInputStream("文件路径"));

byte[] buf = new byte[1024];

int len = 0;
BufferedOutputStream bos = new BufferedOutputStream(s.getOutputStream);
while((len = bis.read(buf))!=-1){
bos.write(buf,0,len);

bos.flush();

}

思路是这样的了。。。具体你自己写吧。

❷ javaweb 怎么样将本地文件传输到远程服务器

可以通过JDK自带的API实现,如下代码:
package com.cloudpower.util;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

import sun.net.TelnetInputStream;
import sun.net.TelnetOutputStream;
import sun.net.ftp.FtpClient;

/**
* Java自带的API对FTP的操作
* @Title:Ftp.java
*/
public class Ftp {
/**
* 本地文件名
*/
private String localfilename;
/**
* 远程文件名
*/
private String remotefilename;
/**
* FTP客户端
*/
private FtpClient ftpClient;

/**
* 服务器连接
* @param ip 服务器IP
* @param port 服务器端口
* @param user 用户名
* @param password 密码
* @param path 服务器路径
* @date 2012-7-11
*/
public void connectServer(String ip, int port, String user,
String password, String path) {
try {
/* ******连接服务器的两种方法*******/
//第一种方法
// ftpClient = new FtpClient();
// ftpClient.openServer(ip, port);
//第二种方法
ftpClient = new FtpClient(ip);

ftpClient.login(user, password);
// 设置成2进制传输
ftpClient.binary();
System.out.println("login success!");
if (path.length() != 0){
//把远程系统上的目录切换到参数path所指定的目录
ftpClient.cd(path);
}
ftpClient.binary();
} catch (IOException ex) {
ex.printStackTrace();
throw new RuntimeException(ex);
}
}
public void closeConnect() {
try {
ftpClient.closeServer();
System.out.println("disconnect success");
} catch (IOException ex) {
System.out.println("not disconnect");
ex.printStackTrace();
throw new RuntimeException(ex);
}
}
public void upload(String localFile, String remoteFile) {
this.localfilename = localFile;
this.remotefilename = remoteFile;
TelnetOutputStream os = null;
FileInputStream is = null;
try {
//将远程文件加入输出流中
os = ftpClient.put(this.remotefilename);
//获取本地文件的输入流
File file_in = new File(this.localfilename);
is = new FileInputStream(file_in);
//创建一个缓冲区
byte[] bytes = new byte[1024];
int c;
while ((c = is.read(bytes)) != -1) {
os.write(bytes, 0, c);
}
System.out.println("upload success");
} catch (IOException ex) {
System.out.println("not upload");
ex.printStackTrace();
throw new RuntimeException(ex);
} finally{
try {
if(is != null){
is.close();
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if(os != null){
os.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
public void download(String remoteFile, String localFile) {
TelnetInputStream is = null;
FileOutputStream os = null;
try {
//获取远程机器上的文件filename,借助TelnetInputStream把该文件传送到本地。
is = ftpClient.get(remoteFile);
File file_in = new File(localFile);
os = new FileOutputStream(file_in);
byte[] bytes = new byte[1024];
int c;
while ((c = is.read(bytes)) != -1) {
os.write(bytes, 0, c);
}
System.out.println("download success");
} catch (IOException ex) {
System.out.println("not download");
ex.printStackTrace();
throw new RuntimeException(ex);
} finally{
try {
if(is != null){
is.close();
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if(os != null){
os.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}

public static void main(String agrs[]) {

String filepath[] = { "/temp/aa.txt", "/temp/regist.log"};
String localfilepath[] = { "C:\\tmp\\1.txt","C:\\tmp\\2.log"};

Ftp fu = new Ftp();
/*
* 使用默认的端口号、用户名、密码以及根目录连接FTP服务器
*/
fu.connectServer("127.0.0.1", 22, "anonymous", "IEUser@", "/temp");

//下载
for (int i = 0; i < filepath.length; i++) {
fu.download(filepath[i], localfilepath[i]);
}

String localfile = "E:\\号码.txt";
String remotefile = "/temp/哈哈.txt";
//上传
fu.upload(localfile, remotefile);
fu.closeConnect();
}
}

❸ 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();"/>

</form>

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

/**

* excel 导入文件明颂

* @return

* @throws IOException

*/

@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客户端怎么把本地的文件上传到服务器

String realpath = ServletActionContext.getServletContext().getRealPath("/upload") ;//获取服务器路径
String[] targetFileName = uploadFileName;
for (int i = 0; i < upload.length; i++) {
File target = new File(realpath, targetFileName[i]);
FileUtils.File(upload[i], target);
//这是一个文件复制类File()里面就是IO操作,如果你不用这个类也可以自己写一个IO复制文件的类
}

其中private File[] upload;// 实际上传文件

private String[] uploadContentType; // 文件的内容类型

private String[] uploadFileName; // 上传文件名

这三个参数必须这样命名,因为文件上传控件默认是封装了这3个参数的,且在action里面他们应有get,set方法

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

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

阅读全文

与java如何将文件上传到服务器相关的资料

热点内容
手机淘宝登录怎么加密码 浏览:481
linux快捷方式图标 浏览:33
阳光车险的app叫什么名字 浏览:461
购买单片机的器件时需要给商家啥 浏览:534
并行编译技术的发展 浏览:549
阿里云服务器安装管理 浏览:550
java手机开发教程 浏览:674
我的世界怎么删除服务器数据 浏览:671
linux内存子系统 浏览:972
加密思维币 浏览:690
魅族访客文件夹 浏览:52
添加的文件夹怎么找 浏览:617
程序员涉黄 浏览:700
maven编译resources下的js 浏览:521
ubuntu文件移动命令 浏览:229
安卓i怎么查找苹果手机 浏览:951
云服务器宕机概率 浏览:232
在线买药用什么app知乎 浏览:815
ubuntu解压xz文件 浏览:676
宏杰加密时电脑关机 浏览:390