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协议上传文件的优缺点相关推荐

  1. mac 远程ftp服务器文件共享,mac 远程ftp服务器文件

    mac 远程ftp服务器文件 内容精选 换一换 云堡垒机配置了FTP/SFTP远程备份,报请检查服务器密码或网络连接情况错误,不能启动远程备份.选择备份具体某一天日志,提示备份正在执行,但远程服务器未 ...

  2. iphone文件访问ftp服务器,ipad ftp服务器 iPhone/iPad访问FTP服务器设置步骤

    ipad ftp服务器 iPhone/iPad访问FTP服务器设置步骤 2013-02-27 15:35:39 脚本之家 有时候出门在外需要用到电脑中的文件,但是却没有携带电脑或者U盘,那么该怎么办呢 ...

  3. Linux与云计算——第二阶段Linux服务器架设 第八章:FTP服务器架设—安装配置FTP服务和客户端配置...

    Linux与云计算--第二阶段Linux服务器架设 第八章:FTP服务器架设-安装配置FTP服务和客户端配置 安装Vsftpd [1] 安装并配置Vsftpd. [root@server ~]# yu ...

  4. Ubuntu Server搭建FTP服务器(2) --本地用户FTP服务器架设

    Ubuntu Server搭建FTP服务器(2) --本地用户FTP服务器架设 参考:ubuntu中文wiki百科,网址:wiki.ubuntu.org.cn 环境:Ubuntu 9.04 Serve ...

  5. win7系统ftp服务器密码修改,win7 ftp服务器密码

    win7 ftp服务器密码 内容精选 换一换 本章主要介绍了如何使用AMH搭建网站.该指导具体操作以搭建DEDECMS系统为例.如果需要用IP访问,将IP地址填在域名栏里即可添加虚拟主机01本示例上传 ...

  6. ftp服务器怎么用,ftp服务器怎么用,详细教程

    ftp服务器是什么,FTP(File Transfer Protocol,文件传输协议) 是 TCP/IP 协议组中的协议之一.FTP协议包括两个组成部分,其一为FTP服务器,其二为FTP客户端.其中 ...

  7. linux计算服务器配置,Linux与云计算——第二阶段Linux服务器架设 第八章:FTP服务器架设—安装配置FTP服务和客户端配置...

    Linux与云计算--第二阶段Linux服务器架设 第八章:FTP服务器架设-安装配置FTP服务和客户端配置 安装Vsftpd [1]安装并配置Vsftpd. [root@server ~]# yum ...

  8. shell脚本上传文件到ftp服务器,shell脚本实现FTP自动上传文件

    -----多个文件----- #!/bin/bash ftp -n< open 172.20.10.242 user logftp logftp binary cd /data/ftp/pcid ...

  9. 文件上传到ftp服务器大小变小,ftp服务器文件上传大小设置

    ftp服务器文件上传大小设置 内容精选 换一换 文件选择上传控件,用于上传文件. Windows场景中,当把源端服务器迁移到华为云后,目的端服务器C盘的已用空间比对应源端服务器C盘的已用空间大至少1G ...

  10. vue.js将本地文件上传到ftp服务器,vue项目使用FTP传输部署项目服务器,node命令编写...

    #!/usr/bin/env node var fs = require('fs');                      //  引入需要模块 var vinylFs = require( ' ...

最新文章

  1. agc018B Sports Festival
  2. Mtk Android编译命令
  3. 基于springMVC拦截器实现操作日志统计
  4. 研究生计划-心得征程
  5. Ingress-nginx工作原理和实践
  6. [react] react中的setState是同步还是异步的呢?为什么state并不一定会同步更新?
  7. 60-270-040-源码-指标监测-Flink自定义metric监控流入量
  8. Java 入门课程视频实战-0基础 上线了,猜拳游戏,ATM实战,欢迎围观
  9. 自动轮播图html代码适应手机,JS实现自动轮播图效果(自适应屏幕宽度+手机触屏滑动)...
  10. leetcode—14.链表反转类题目python解答
  11. 2022春山东大学人工智能导论期末题库附答案
  12. docker配置阿里云镜像加速器
  13. 为什么html中图片显示不出来,网页图片显示不出来该怎么办?
  14. css子元素和后代元素选择器
  15. 表的创建(create),修改(alter)和删除(drop)
  16. Veracrypt加密,配合WD Security西数移动硬盘加密
  17. JAVA实现图片加水印及Base64图片字符串加水印
  18. Gibberish 本地化插件学习
  19. 使用Spark SQL读取Hive上的数据
  20. 单片机应用系统设计技术——数控云台master

热门文章

  1. 【图像处理】基于ART算法实现图像重建matlab源码
  2. JiaoZiVideoPlayer饺子视频播放器
  3. 语法分析:LL(1)语法分析的实现及扩展的巴科斯范式
  4. opencv 学习笔记五 二维离散卷积
  5. python应用程序无法正常启动0xc000007b_应用程序0xc000007b无法正常启动怎么办,图文详解如何解决...
  6. protege5.0基础教程
  7. 七年级计算机竞赛获奖内容怎么写,~上七年级信息技术教案(25页)-原创力文档...
  8. nginx错误:unknown directive “锘? in F:\nginx/conf/nginx.conf:3
  9. cento7安装kvm并通过kvm命令行安装centos7
  10. 企业级容器技术 k8s 资源监控的部署和ui界面的部署