http上传文件到ftp服务器,HTTP协议与FTP协议上传文件的优缺点
1:用http协议上传更适合web编程的方便;传小于1M文件速度要比用ftp协议上传文件略快。安全性好;不像ftp那样;必须要启动一个ftp服务才行。2:用ftp协议上传文件大于1M的文件速度比http快;文件越大;上传的速度就比http上传快的倍数越大。而且用java编写程序;ftp比http方便。好,废话少说;我们先搭建一个实例来理性认识一下用java编写ftp上传文件的技术。
首先在本机启动一个ftp服务,ftp的用户:"FrzccyChen" 密码:"123456789";
文件1:MainCtrl.java(servlet文件)内容如下:
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.ServletException;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import sun.net.TelnetOutputStream;
import sun.net.ftp.FtpClient;
public class MainCtrl extends HttpServlet {
private FtpClient ftpClient;
public void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
try {
// 连接ftp服务器
connectServer("10.10.7.124", "FrzccyChen", "123456789", "\\");
// 上传文件;并返回上传文件的信息
if (upload(req.getParameter("file_name")) == null) {
req.setAttribute("inf", "上传文件失败");
}
req.setAttribute("inf", upload(req.getParameter("file_name")));
} catch (Exception e) {
System.out.println(e.toString());
req.setAttribute("inf", e.toString());
req.getRequestDispatcher("view_inf.jsp").forward(req, resp);
return;
} finally {
if (ftpClient != null) {
ftpClient.closeServer();
}
}
req.getRequestDispatcher("view_inf.jsp").forward(req, resp);
}
public void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
doPost(req, resp);
}
// 连接ftp服务器
private void connectServer(String server, String user, String password,
String path) throws IOException {
// server:FTP服务器的IP地址;user:登录FTP服务器的用户名
// password:登录FTP服务器的用户名的口令;path:FTP服务器上的路径
ftpClient = new FtpClient();
ftpClient.openServer(server);
ftpClient.login(user, password);
// path是ftp服务下主目录的子目录
if (path.length() != 0)
ftpClient.cd(path);
// 用2进制上传
ftpClient.binary();
}
// 上传文件;并返回上传文件的信息
private String upload(String filename) throws Exception {
TelnetOutputStream s = null;
FileInputStream is = null;
try {
File file = new File(filename);
String tempFile = file.getName();//获取上传文件的文件名
os = ftpClient.put(tempFile);
java.io.File file_in = new java.io.File(filename);
if (file_in.length() == 0) {
return "上传文件为空!";
}
is = new FileInputStream(file_in);
byte[] bytes = new byte[1024];
int c;
while ((c = is.read(bytes)) != -1) {
os.write(bytes, 0, c);
}
} finally {
if (is != null) {
is.close();
}
if (os != null) {
os.close();
}
}
return "上传文件成功!";
}
}
文件2:upftp.jsp(前台操作页面)内容如下:
FTP上传文件
文件3:view_inf.jsp(信息提示页面)和upftp.jsp一样放在context的根目录下
th
{
background-color: #4455aa;
color: white;
font-size: 14px;
font-weight:bold;
}
td.TableBody1
{
background-color: #FFFFF0;
color: white;
font-size: 14px;
font-weight:bold;
font-color: red;
}
.tableBorder1
{
width:97%;
border: 1px;
background-color: #6595D6;
}
cellpadding="3" cellspacing="1">
信 息 提 示:
${inf}
type="button" />
文件4:web.xml(j2ee的配置文件)放在WEB-INF目录下,
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2eehttp://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
version="2.4">
MainCtrl
com.test.ftp.MainCtrl
MainCtrl
/MainCtrl
Encoding
com.test.ftp.Encoding
Encoding
/*
PS:如果要上传带中文名称的文件名,需要改动FTP服务的设置.具体如下:
1、打开SERV-U---导航---限制和设置---FTP设置---找到OPTS UTF8 命令----编辑----选择禁用命令---然后确认
2、再选择全局属性-----高级选项---找到“对所有已收发的路径和文件名使用UTF-8编码”,把前面的勾去掉,确认。最后回到导航,用同样的方法设置“服务器限制和设置”,保存退出,就完成啦
http上传文件到ftp服务器,HTTP协议与FTP协议上传文件的优缺点相关推荐
- mac 远程ftp服务器文件共享,mac 远程ftp服务器文件
mac 远程ftp服务器文件 内容精选 换一换 云堡垒机配置了FTP/SFTP远程备份,报请检查服务器密码或网络连接情况错误,不能启动远程备份.选择备份具体某一天日志,提示备份正在执行,但远程服务器未 ...
- iphone文件访问ftp服务器,ipad ftp服务器 iPhone/iPad访问FTP服务器设置步骤
ipad ftp服务器 iPhone/iPad访问FTP服务器设置步骤 2013-02-27 15:35:39 脚本之家 有时候出门在外需要用到电脑中的文件,但是却没有携带电脑或者U盘,那么该怎么办呢 ...
- Linux与云计算——第二阶段Linux服务器架设 第八章:FTP服务器架设—安装配置FTP服务和客户端配置...
Linux与云计算--第二阶段Linux服务器架设 第八章:FTP服务器架设-安装配置FTP服务和客户端配置 安装Vsftpd [1] 安装并配置Vsftpd. [root@server ~]# yu ...
- Ubuntu Server搭建FTP服务器(2) --本地用户FTP服务器架设
Ubuntu Server搭建FTP服务器(2) --本地用户FTP服务器架设 参考:ubuntu中文wiki百科,网址:wiki.ubuntu.org.cn 环境:Ubuntu 9.04 Serve ...
- win7系统ftp服务器密码修改,win7 ftp服务器密码
win7 ftp服务器密码 内容精选 换一换 本章主要介绍了如何使用AMH搭建网站.该指导具体操作以搭建DEDECMS系统为例.如果需要用IP访问,将IP地址填在域名栏里即可添加虚拟主机01本示例上传 ...
- ftp服务器怎么用,ftp服务器怎么用,详细教程
ftp服务器是什么,FTP(File Transfer Protocol,文件传输协议) 是 TCP/IP 协议组中的协议之一.FTP协议包括两个组成部分,其一为FTP服务器,其二为FTP客户端.其中 ...
- linux计算服务器配置,Linux与云计算——第二阶段Linux服务器架设 第八章:FTP服务器架设—安装配置FTP服务和客户端配置...
Linux与云计算--第二阶段Linux服务器架设 第八章:FTP服务器架设-安装配置FTP服务和客户端配置 安装Vsftpd [1]安装并配置Vsftpd. [root@server ~]# yum ...
- shell脚本上传文件到ftp服务器,shell脚本实现FTP自动上传文件
-----多个文件----- #!/bin/bash ftp -n< open 172.20.10.242 user logftp logftp binary cd /data/ftp/pcid ...
- 文件上传到ftp服务器大小变小,ftp服务器文件上传大小设置
ftp服务器文件上传大小设置 内容精选 换一换 文件选择上传控件,用于上传文件. Windows场景中,当把源端服务器迁移到华为云后,目的端服务器C盘的已用空间比对应源端服务器C盘的已用空间大至少1G ...
- vue.js将本地文件上传到ftp服务器,vue项目使用FTP传输部署项目服务器,node命令编写...
#!/usr/bin/env node var fs = require('fs'); // 引入需要模块 var vinylFs = require( ' ...
最新文章
- agc018B Sports Festival
- Mtk Android编译命令
- 基于springMVC拦截器实现操作日志统计
- 研究生计划-心得征程
- Ingress-nginx工作原理和实践
- [react] react中的setState是同步还是异步的呢?为什么state并不一定会同步更新?
- 60-270-040-源码-指标监测-Flink自定义metric监控流入量
- Java 入门课程视频实战-0基础 上线了,猜拳游戏,ATM实战,欢迎围观
- 自动轮播图html代码适应手机,JS实现自动轮播图效果(自适应屏幕宽度+手机触屏滑动)...
- leetcode—14.链表反转类题目python解答
- 2022春山东大学人工智能导论期末题库附答案
- docker配置阿里云镜像加速器
- 为什么html中图片显示不出来,网页图片显示不出来该怎么办?
- css子元素和后代元素选择器
- 表的创建(create),修改(alter)和删除(drop)
- Veracrypt加密,配合WD Security西数移动硬盘加密
- JAVA实现图片加水印及Base64图片字符串加水印
- Gibberish 本地化插件学习
- 使用Spark SQL读取Hive上的数据
- 单片机应用系统设计技术——数控云台master
热门文章
- 【图像处理】基于ART算法实现图像重建matlab源码
- JiaoZiVideoPlayer饺子视频播放器
- 语法分析:LL(1)语法分析的实现及扩展的巴科斯范式
- opencv 学习笔记五 二维离散卷积
- python应用程序无法正常启动0xc000007b_应用程序0xc000007b无法正常启动怎么办,图文详解如何解决...
- protege5.0基础教程
- 七年级计算机竞赛获奖内容怎么写,~上七年级信息技术教案(25页)-原创力文档...
- nginx错误:unknown directive “锘? in F:\nginx/conf/nginx.conf:3
- cento7安装kvm并通过kvm命令行安装centos7
- 企业级容器技术 k8s 资源监控的部署和ui界面的部署