ftp上传的文件大小总是0?

whf_08 2011-04-18 11:41:32
无论是c++写的程序还是java写的,上传服务器连接上了,文件存放路径和文件名也建立了,
但是到ftp.storeFile(sound, fis);这一步是就走不下去了,查看服务器上的文件大小是0K;
方法是用定时器调用的,而不是页面请求调用;

很奇怪的是在公司服务器上和本人自己机器上传都没问题,
就是放到衢州服务器上时出现ftp上传的文件大小是0,在storeFile这一步时停止了;

如果是代码问题,在公司服务器上运行正常,如果是衢州服务器问题,在那服务器上用FlashFXP工具上传就没问题;

所以很头大,郁闷死了!!!


...全文
3960 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
暗然的白天 2011-05-06
  • 打赏
  • 举报
回复
这问题...上传小的文件可以不?
这怎么像我以前遇到的那个用hibernate来存储大的二进制数据到数据库的问题、也是莫名的停到那个地方,不报错,但就是存不到里面去
qm4050 2011-05-06
  • 打赏
  • 举报
回复
先找到问题吧,没找到问题怎么解决
O溺水的鱼0 2011-05-05
  • 打赏
  • 举报
回复
翻到最后都没看到异常,没异常很难解决。
ChDw 2011-05-05
  • 打赏
  • 举报
回复
你可以尝试在store之前调用c.enterRemotePassiveMode();可能是由于你的网关等无法转换PORT命令。使用Passive就可以
sonictwb 2011-05-05
  • 打赏
  • 举报
回复
今天也遇到了这个问题,后来解决了
http://blog.csdn.net/lgm277531070/archive/2010/09/08/5871175.aspx
应该是客户端TCP的0端口被占用,或者防火墙的问题
关了所有防火墙,重启机器就好了
小绵羊 2011-04-18
  • 打赏
  • 举报
回复
线程等待中,你用debug看看谁锁住了资源
whf_08 2011-04-18
  • 打赏
  • 举报
回复
郁闷呀!!!
谁遇见过这么变态的问题就帮帮忙呗
  • 打赏
  • 举报
回复
悲剧了。。
whf_08 2011-04-18
  • 打赏
  • 举报
回复
跟代码应该没关吧,公司服务器就很正常。
没有异常的,只是到存储内容的时候就停了,不抱错也不往下进行
whf_08 2011-04-18
  • 打赏
  • 举报
回复
public class FtpUploadSound {
private ISellRecordDao sellRecordDao;

private static FTPClient ftp;

private static int flag = 0;

public void doUpload() {
String soundsUploadTag = ConfigFilePath
.configByParaName("soundsUploadTag");
if (soundsUploadTag != null && soundsUploadTag.equals("0")) {
List rings = sellRecordDao.getRingoutPut();
Ringout ring = null;
String remote = null;
String local = null;
String sound = null;
boolean connectFlag = false;
for (int i = 0; i < rings.size(); i++) {
ring = (Ringout) rings.get(i);
// 第一次进行ftp连接
if (i == 0) {
// 修改上传状态
ConfigFilePath.updateConfigByParaName("soundsUploadTag","1");
connectFlag = connectFtpServer("202.107.217.46", "sply_1", "qljlyrh",
21);
}
if (connectFlag) {// 连接成功
remote = getPathStr(ring, 0);
local = getPathStr(ring, 1);
sound = ring.getSong();
if (createDirectory(remote)) {// 创建进入路径
if (uploadFile(local, remote, sound, ring.getId())) {// 上传录音
// 更新记录
String sql = "update ringoutput set flag=1 where id="
+ ring.getId();
sellRecordDao.deleteDt(sql);
}
}
if (i == rings.size() - 1) {
disconnect(); // 断开ftp连接
// 修改上传状态
ConfigFilePath.updateConfigByParaName("soundsUploadTag","0");
}
}
}
}
}

/**
* 连接FTP服务器
*
* @param serverIP
* @param user
* @param password
* @return boolean
*/

public boolean connectFtpServer(String serverIP, String user,
String password, int port) {
ftp = new FTPClient();
int reply;
try {
ftp.connect(serverIP, port);
reply = ftp.getReplyCode();
if (!FTPReply.isPositiveCompletion(reply)) {
ftp.disconnect();
System.out.println("FTP服务器连接失败");
return false;
}

if (!ftp.login(user, password)) {
disconnect();
System.out.println("FTP服务器登录失败");
return false;
}
} catch (IOException e) {
// 修改上传状态
ConfigFilePath.updateConfigByParaName("soundsUploadTag", "0");
disconnect();
System.out.println("FTP服务器连接异常");
// System.out.println(e);
return false;
}
return true;
}

/**
* 创建文件夹
*
* @param path
* @return boolean
*/

public boolean createDirectory(String path) {
try {
String[] dirArray = path.split("/");
for (int i = 0; i < dirArray.length; i++) {
if (dirArray[i] != null)
if (!ftp.changeWorkingDirectory(dirArray[i])) {
ftp.makeDirectory(dirArray[i]);
ftp.changeWorkingDirectory(dirArray[i]);
}
}
} catch (IOException e) {
// 修改上传状态
ConfigFilePath.updateConfigByParaName("soundsUploadTag", "0");
disconnect();
System.out.println("路径创建进入失败!");
// System.out.println(e);
return false;
}
return true;
}

/**
* 上传文件
*
* @param local
* @param remote
* @return boolean
*/

public boolean uploadFile(String local, String remote, String sound, long id) {
FileInputStream fis = null;
try {
File srcFile = new File(local);
fis = new FileInputStream(srcFile);
// 设置上传目录
ftp.changeWorkingDirectory(remote);
ftp.setBufferSize(1024);
ftp.setControlEncoding("GBK");
// 设置文件类型(二进制)
ftp.setFileType(FTPClient.BINARY_FILE_TYPE);
ftp.storeFile(sound, fis);
System.out.println(local + "文件上传到" + remote + "成功!");
} catch (IOException e) {
ConfigFilePath.updateConfigByParaName("soundsUploadTag", "0");

String sql = "update ringoutput set flag=2 where id=" + id;
sellRecordDao.deleteDt(sql);
disconnect();
System.out.println(local + "上传到" + remote + "失败!");
// System.out.println(e);
return false;
}
return true;
}

/**
* 断开连接
*/

public void disconnect() {
if (ftp.isConnected()) {
try {
ftp.logout();
ftp.disconnect();
} catch (IOException e) {
e.printStackTrace();
}
}
}

public ISellRecordDao getSellRecordDao() {
return sellRecordDao;
}
zn85600301 2011-04-18
  • 打赏
  • 举报
回复
有何异常信息没? 或者是没空间了?
小绵羊 2011-04-18
  • 打赏
  • 举报
回复
楼主上代码
蒙面客 2011-04-18
  • 打赏
  • 举报
回复
1.服务器权限
2.查看是否线程被挂起。。
cnqing 2011-04-18
  • 打赏
  • 举报
回复
不急,先看看在本地能不能上传上去,如果本地可以,你再去看你访问服务器的权限什么有没有问题
sjlzcj 2011-04-18
  • 打赏
  • 举报
回复
确定用户是否有写权限啊
wangjn1982 2011-04-18
  • 打赏
  • 举报
回复
你看看服务器当前用户的权限够不够
whf_08 2011-04-18
  • 打赏
  • 举报
回复
java怎么用debug看呀??

如果有ftp上传的方法也可以呀,只要能让我上传上去就可以

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧