(Java.FTP问题)有个需求啊要求用户发帖子的同时,如果帖子有附件

Kyle-soft 2010-03-09 09:47:18
就把这个附件,就把附件按照一定规则传到另外一台服务器上。

现在打算用户提交的时候,将文件通过ftp传到另外一台服务器上。
但是有两个担心啊不知道是否多余啊

1、ftp传的时候有没有跟数据库连接一样的概念啊。。。。是建立一个长ftp链接?还是每次都重新握手然后ftp文件啊。
2、在并发传文件的情况下。ftp是否有线程安全,或者等待的问题啊(就是等一个发完了另外一个才能开始发)?

麻烦大家了啊!有人有现成的例子吗?thx
...全文
109 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
一头头 2010-03-12
  • 打赏
  • 举报
回复
JF 只要5分 thanks
qingyuan18 2010-03-11
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 zlyperson 的回复:]
引用 6 楼 qingyuan18 的回复:FTP服务器宕机的话调用FtpClient的API时会Socket异常,你只需写好try-catch即可 没有必要每次开一个ftp上传线程时都去传临时目录的文件,写一个定时线程定期扫描临时目录,发现有未传完的文件即上传即可


那如果我定时扫描那个目录,把目录下内容都上传。
比如说我要在根目录是RootDir目录下创建我的文件。
我的java程序在RootDir下生成文件RootDir/dir1/dir2/file1。但是目录dir1/dir2都是没有的。所以我需要先创建这两个目录,然后在创建文件file1。那如果我在刚创建好dir1/dir2的时候,这个扫描的线程刚好到了定时的时间,就把rootDir下的内容全部移动(剪切)到另外一台服务器上了。那我java即将要创建的文件file1会不会就失败了?
那这种情况怎么办呢?
[/Quote]

你说的这个涉及到子目录拷贝了,如果想避免这种情况下的文件覆盖,最好调用服务器的tar命令打包整个RootDir目录,然后FTP上传到远程再解tar,这样不会出现文件丢失。

JDK里面Runtime.exec()可以运行Unix命令,当然你首先得有那台机器上相应目录的操作权限
JavaAlpha 2010-03-11
  • 打赏
  • 举报
回复
引用 8 楼 zlyperson 的回复:
引用 6 楼 qingyuan18 的回复:FTP服务器宕机的话调用FtpClient的API时会Socket异常,你只需写好try-catch即可 没有必要每次开一个ftp上传线程时都去传临时目录的文件,写一个定时线程定期扫描临时目录,发现有未传完的文件即上传即可


那如果我定时扫描那个目录,把目录下内容都上传。
比如说我要在根目录是RootDir目录下创建我的文件。
我的java程序在RootDir下生成文件RootDir/dir1/dir2/file1。但是目录dir1/dir2都是没有的。所以我需要先创建这两个目录,然后在创建文件file1。那如果我在刚创建好dir1/dir2的时候,这个扫描的线程刚好到了定时的时间,就把rootDir下的内容全部移动(剪切)到另外一台服务器上了。那我java即将要创建的文件file1会不会就失败了?
那这种情况怎么办呢?


上传之前检测目录是否存在,不存在就提示,或自己创建目录。
JavaAlpha 2010-03-11
  • 打赏
  • 举报
回复
楼主 可以这样:先把文件上传到数据库,成功之后,再把文件通过FTP发送。

简单的思路 仅供参考。
Kyle-soft 2010-03-11
  • 打赏
  • 举报
回复
引用 6 楼 qingyuan18 的回复:
FTP服务器宕机的话调用FtpClient的API时会Socket异常,你只需写好try-catch即可

没有必要每次开一个ftp上传线程时都去传临时目录的文件,写一个定时线程定期扫描临时目录,发现有未传完的文件即上传即可



那如果我定时扫描那个目录,把目录下内容都上传。
比如说我要在根目录是RootDir目录下创建我的文件。
我的java程序在RootDir下生成文件RootDir/dir1/dir2/file1。但是目录dir1/dir2都是没有的。所以我需要先创建这两个目录,然后在创建文件file1。那如果我在刚创建好dir1/dir2的时候,这个扫描的线程刚好到了定时的时间,就把rootDir下的内容全部移动(剪切)到另外一台服务器上了。那我java即将要创建的文件file1会不会就失败了?
那这种情况怎么办呢?
sunlaji008 2010-03-10
  • 打赏
  • 举报
回复
只有java是永恒的
qingyuan18 2010-03-10
  • 打赏
  • 举报
回复
FTP服务器宕机的话调用FtpClient的API时会Socket异常,你只需写好try-catch即可

没有必要每次开一个ftp上传线程时都去传临时目录的文件,写一个定时线程定期扫描临时目录,发现有未传完的文件即上传即可
Kyle-soft 2010-03-10
  • 打赏
  • 举报
回复
为解决被传的Ftp服务器宕机的问题,我想在每次做上传的时候,除了上传当前的附件内容,还把存储附件的临目录里的文件全都上传上去,但是我担心发生并发以后临时目录里面的文件被上传两次。
比如场景是:FTP服务器宕机,本来是帖子有附件就传到FTP服务器上,宕机就传失败,文件就保留在了当前服务器FTP临时目录下了,然后等FTP服务器正常了以后,如果有两个用户同时都上传带附件的帖子,我的逻辑是,先会将临时目录文件都上传。然后在上传这个附件。出现并发可能造成上传两次临时目录,或者还有其他的问题,不知道怎么解决比较好啊。55
Kyle-soft 2010-03-09
  • 打赏
  • 举报
回复
引用 2 楼 qingyuan18 的回复:
参考apache的common包里FtpClient API,可以满足你的需求了

多线程FTP上传是你自己控制的,FtpClient API只负责一个ftp登录的上传下载过程,你要开多个线程,写一个Runable实现里面调FtpClient的API即可

记得以前做项目的时候封装过FtpClient的工具类,楼主要的话给你找一找

QQ:121102723


谢谢啊~~~~~~~~我想知道并发的时候,如果并发传两个文件的话,共用一个ftp用户、密码,上传没问题吧?
会出现排队或者线程或者其他什么问题吗?
qingyuan18 2010-03-09
  • 打赏
  • 举报
回复
参考apache的common包里FtpClient API,可以满足你的需求了

多线程FTP上传是你自己控制的,FtpClient API只负责一个ftp登录的上传下载过程,你要开多个线程,写一个Runable实现里面调FtpClient的API即可

记得以前做项目的时候封装过FtpClient的工具类,楼主要的话给你找一找

QQ:121102723
musiclee 2010-03-09
  • 打赏
  • 举报
回复
唉,关于网络方面的基本忘了个精光,帮你顶顶吧 顺路mark下
内容概要:本文档系统讲解了创意版烟花的完整实现路径,从粒子系统原理出发,深入剖析烟花效果的五大核心阶段——上升、爆炸、扩散、衰减与拖尾,并基于四种技术栈(HTML5 Canvas、Three.js、Python Pygame、AI音乐节拍同步)提供可运行的完整代码方案。文档涵盖基础实现、视觉增强(形状变化、闪烁、二次爆炸)、交互升级(鼠标拖动、手势控制)、性能优化(对象池、渲染优化)、部署上线(GitHub Pages、Vercel)及创意拓展(文字烟花、数据可视化、协同互动),形成“原理→编码→调优→部署→创新”的闭环学习链路。同时融入Web Audio API节拍检测、滑动窗口动态阈值等实用算法,助力开发者打造兼具美观性与技术深度的动态视觉作品。; 适合人群:具备基础编程能力的前端开发者、Python爱好者、多媒体交互设计人员,以及希望提升图形编程与动效设计能力的工作1-3年研发人员;也适用于教学演示、作品集建设或创意项目原型开发。; 使用场景及目标:①掌握粒子系统在动画与游戏开发中的底层实现机制;②实现网页端与桌面端的高性能烟花特效;③构建音乐可视化、数据艺术、互动装置等融合型项目;④学习从代码实现到线上部署的全流程工程实践。; 阅读建议:建议按照“Canvas基础→进阶优化→3D/Pygame/AI扩展”的路径逐步实践,重点关注参数调优表与性能优化策略,在调试中理解每行代码的作用;对于音乐同步等复杂功能,可先运行成功案例再深入算法逻辑,结合实际项目需求灵活组合各项技术模块。

62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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