使用FTP做图片服务器出现的问题

2023-05-16

[list]
[*]
[color=red]FTP上传文件长度为空的问题[/color]
这个问题是没有调用FTPClient的ftp.completePendingCommand();
原来在一个文件传输过程中会产生两个Reply:
150 Opening BINARY mode data connection for 上传文件的名字
226 Transfer complete.
而FTPClient自动消费掉一个,于是解析Reply就发生了错位, 下一个命令的会解析266那条. 接下来的命令都不是解析自己的Reply而是前一次命令的. 所有在PASV命令的Reply码就不对了, FTPClient也就不会执行接下来本应该执行RETR命令.
所以有时候当FTP传输文件的时候是没问题的(一般是第一次),后面的就会发生错位了。故文件传输后为0.
而FTPClient的completePendingCommand()方法就是用来把前面传输完毕的Reply清空的。
(因为我是使用SPRING来管理FtpServer这个类的,是单例,所以有上面的问题,如果传输一次就NEW一下,估计没这个问题。)

伪代码如下

try{
os=ftp.storeFileStream(File.separatorChar+folderName+fileName);
LogFactory.log("上传文件"+fileName+"至FTP服务器", Level.DEBUG, null);
if(os!=null){
int bytesRead = 0;
byte[] buffer = new byte[1024];
while((bytesRead=fileInputStream.read(buffer,0,1024))!=-1){
System.out.println("图片长度"+bytesRead);
os.write(buffer,0,bytesRead);

os.flush();
}
}
}catch(){

}finally{
//先关文件上传流
fileInputStream.close();
//再关FTP输入流
os.close();
//一定要加,否则上传至FTP服务器的文件可能长度为0
ftp.completePendingCommand();

}

[/list]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用FTP做图片服务器出现的问题 的相关文章

  • centos / redhat 版本防火墙配置之firewall-cmd配置

    检查服务器版本 cat etc redhat release 是centos 7 redhat 7 或以上版本的可以配置firewall 是centos 6 redhat 6 及一下版本的需要配置iptables 检查firewall状态是
  • 运行x程序出现:Can't open display 原因及其解决方法

    因为Xserver默认情况下不允许别的用户的图形程序的图形显示在当前屏幕上 如果需要别的用户的图形显示在当前屏幕上 则应以当前登陆的用户 也就是切换身份前的用户执行如下命令 xhost 43 xhost 43 的作用 xhost 是用来控制
  • ORACLE数据库管理员的职责

    ORACLE数据库管理员的职责 一 xff0e 概述 ORACLE数据库管理员应按如下方式对ORACLE数据库系统做定期监控 xff1a 1 每天对ORACLE数据库的运行状态 xff0c 日志文件 xff0c 备份情况 xff0c 数据库
  • 实用webpack插件之ProvidePlugin

    现代化前端的全局引入是一个很有趣的东西 先来看下以下几个场景 xff1a 在webpack中 xff0c 我们可以在resolve的alias中定义一个层级较高的目录为一个自定义变量 例如resolve alias 64 path join
  • Conda&&Pip 使用

    提示 xff1a 文章写完后 xff0c 目录可以自动生成 xff0c 如何生成可参考右边的帮助文档 目录 一 conda 配置环境 1 查看conda版本 2 升级conda版本 3 修改conda下载源渠道 4 conda删除追加的下载
  • IDEA2022.1创建maven项目,规避idea2022新建maven项目卡死,无反应问题

    idea 2022的新建项目和旧的不一样 选择maven archetype 输入 name xff08 项目名称 xff09 location xff08 项目文件路径 xff09 jdk 1 8 catalog xff1a 目录 xff
  • tightvnc绿色版,细数4款超好用的tightvnc绿色版

    在使用tightvnc软件时 xff0c 通常都希望能找到绿色版软件 xff0c 那大家知道有哪些tightvnc绿色版软件吗 xff1f 你所使用过的tightvnc绿色版软件又有哪些呢 xff1f 接下来让我们一起来看看那些超好用的ti
  • 修改 FTP 文件夹 权限 Linux

    cd 到根目录 1 例如FTP服务器根目录是aliRoot cd aliRoot 2 指定一个文件夹修改权限 xff1b 命令 xff1a chmod R 777 goodlist 现在 aliRoot goodlist 文件夹下就可以上传
  • Linux命令大全: mkdir命令 - 创建目录

    1 详解 mkdir命令是 make directories 的缩写 xff0c 用来创建目录 注意 xff1a 默认状态下 xff0c 如果要创建的目录已经存在 xff0c 则提示已存在 xff0c 而不会继续创建目录 所以在创建目录时
  • shell基础教程25: Shell字符串截取(最详细的教程,看完这篇可以弄懂整个原理)

    Shell 截取字符串通常有两种方式 xff1a 从指定位置开始截取和从指定字符 xff08 子字符串 xff09 开始截取 一 从指定位置开始截取 这种方式需要两个参数 xff1a 除了指定起始位置 xff0c 还需要截取长度 xff0c
  • Linux命令大全: nohup命令 – 后端运行程序

    nohup命令的全称为 no hang up xff0c 该命令可以将程序以忽略挂起信号的方式运行起来 xff0c 被运行的程序的输出信息将不会显示到终端 无论是否将 nohup 命令的输出重定向到终端 xff0c 输出都将附加到当前目录的
  • Linux命令大全: cat命令 – 在终端设备上显示文件内容

    1 详情 Linux系统中有很多个用于查看文件内容的命令 xff0c 每个命令又都有自己的特点 xff0c 比如这个cat命令就是用于查看内容较少的纯文本文件的 cat这个命令也很好记 xff0c 因为cat在英语中是 猫 的意思 xff0
  • Nginx安装报错:./configure: error: the HTTP gzip module requires the zlib library.

    错误信息 span class token punctuation span span class token operator span configure error the HTTP gzip module requires the
  • Nginx安装时:安装zlib1g-dev时提示“E: 无法定位软件包 zliblg-dev“的原因

    起因 安装zlig1g dev 依赖包时 xff1a sudo apt get install zliblg dev安装失败 发现 zlig1g dev中的第5个字母不是l xff0c 而是阿拉伯数字1 解决 输入sudo apt get
  • Nginx在Linux下常用的命令

    一 命令说明 选项说明 h帮助命令 v查看版本号 V查看版本号和配置选项 可用类查看已安装的所有模块 t测试配置文件是否正确 T测试nginx conf文件是否存在语法错误 q优雅停止nginx xff0c 有连接时会等连接请求完成再杀死w
  • ubuntu安装nginx与卸载

    一 安装nginx 1 前言 安装nginx 主要有2种方式 1 直接使用 sudo apt get install nginx 2 使用源码的形式安装 本次主要记录的是使用源码安装 2 下载nginx源码 a nginx官网下载地址 gt
  • ping不通Linux服务器怎么办?

    问题描述 xff1a ping是最常见的网络命令 xff0c 用来测试和远程机器是否连通的方法 我们常常会遇到一个问题 xff1a 无法ping一台远程主机 原因分析 xff1a ping不通远程机器 xff0c 最常见的原因有 xff1a
  • Nginx 学习 2: nginx进程模型

    一 概述 nginx有两类进程 xff0c 一类称为master进程 相当于管理进程 xff0c 另一类称为worker进程 xff08 实际工作进程 xff09 启动方式有两种 xff1a 单进程启动 xff1a 此时系统中仅有一个进程
  • nginx学习 3: Nginx 核心配置详解

    一 结构说明 说明 main 配置影响nginx全局的指令 一般有运行nginx服务器的用户组 xff0c nginx进程pid存放路径 xff0c 日志存放路径 xff0c 配置文件引入 xff0c 允许生成worker process数
  • Android中最佳实践@BindView代替繁琐的findViewById

    ButterKnife ButterKnife是一个专注于Android系统的View注入框架 以前总是要写很多findViewById来找到View对象 xff0c 有了ButterKnife可以很轻松的省去这些步骤 是大神JakeWha

随机推荐