java 将文件上传到服务器指定目录下 !!!!!!!!!!!!!!!!!!

xql80329 2008-03-10 03:13:47
先举例说明一下: A为服务器 B为网络中任意一台机器(包括A).
我现在要将B上文件上传到A机器上. 这个怎么搞呢?(除FTP)
我查了不少资料. 看了以后 都是说上传功能 可是 没看到它要传到哪儿或者说没讲传到服务器上.
...全文
16396 13 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaohua198706 2009-09-06
  • 打赏
  • 举报
回复
see see!attention!
老紫竹 2008-03-11
  • 打赏
  • 举报
回复
方法有几种
1 利用80端口,可以采用
a) html upload, 用表单的形式。 此方法适合于用户自己亲自操作的情况。
b) URLConnection, 用A机器的程序实现,适合于2个机器都是服务器,需要服务器之间交换文件
c) Web Service, 实质还是表单形式,但能规范操作

2 利用其它端口
a) ftp 最简单,因为服务器端有现成的可用
b) 其它协议,基本需要自己书写客户端和服务器端,比较麻烦,比如RMI/Socket
olivesoup 2008-03-11
  • 打赏
  • 举报
回复
前台就用我说的那个file标签提交就行了,下面是提交后向服务器指定位置写文件

public class Action extends BaseAction {
private static final String UPLOAD_PATH = "D:\\upload\\";
private static final int BUF_SIZE = 8192;

public ActionForward upload(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
final UploadForm bodyForm = (UploadForm) form;
final FormFile formFile = bodyForm.getFile();

if (formFile.getFileSize() > 0) {
boolean isUpload = uploadFile(formFile);
System.out.println("upload complate is " + isUpload);
}

return mapping.findForward(FORWARD_SHOW);
}

private boolean uploadFile(FormFile formFile) throws FileNotFoundException,
IOException {

// 如果目录不存在,创建目录
new File(UPLOAD_PATH).mkdirs();

final File uploadFile = new File(UPLOAD_PATH, formFile.getFileName());

// 如果文件已存在,将旧文件删除
uploadFile.delete();

final OutputStream outputStream = new FileOutputStream(uploadFile);
BufferedInputStream bufferedInputStream = null;
BufferedOutputStream bufferedOutputStream = null;
try {
bufferedInputStream = new BufferedInputStream(formFile.getInputStream());
bufferedOutputStream = new BufferedOutputStream(outputStream);

final byte temp[] = new byte[BUF_SIZE];
int readBytes = 0;
while ((readBytes = bufferedInputStream.read(temp)) != -1) {
bufferedOutputStream.write(temp, 0, readBytes);
}
bufferedOutputStream.flush();

} finally {
if (bufferedOutputStream != null) {
bufferedOutputStream.close();
}
if (bufferedInputStream != null) {
bufferedInputStream.close();
}
formFile.destroy();
}

return true;

}
}

xql80329 2008-03-11
  • 打赏
  • 举报
回复
xql80329 2008-03-11
  • 打赏
  • 举报
回复
LS 谢谢 看一下你的代码 xql80329@163.com
olivesoup 2008-03-11
  • 打赏
  • 举报
回复
看的我都有些迷糊了,这个应该是A的问题啊,就是一个文件上传的处理
只要A提供上传功能,连网的任何一台机器都能上传到A上

还是我什么地方没理解到,好象大家解释的很复杂的样子

举个例子,比如struts
客户端用<html:file name="UploadForm" property="file" />将文件上传
服务器端用FormFile接收,然后io写到服务器磁盘指定位置上,上传就完成了

不知道你说的是不是这个,是的话给你发些代码
cangbai217 2008-03-11
  • 打赏
  • 举报
回复
用AXIS2可以简单的实现,Webservice的aar放到服务器,客户端通过service提供的URL上传
xql80329 2008-03-11
  • 打赏
  • 举报
回复
自己的贴 顶起去 直到有满意的
xql80329 2008-03-10
  • 打赏
  • 举报
回复
如果 A 能提供一个 WEB 服务器,而且里面有一个 URL 能接收 POST 过来的文件,那你在 B 上边就可以做个 HTTP 客户端,把文件提交上去,或者,更常用的办法,由 A 再提供一个上载的页面。
你说的这个方法 是我想要的!
我们做的一个产品 我做这个功能的目的就是 要对系统进行远程更新!
maquan 2008-03-10
  • 打赏
  • 举报
回复
这个问题你不能只站在 B 这边想。主要还是得站在 A 这边看看能提供什么样的上传方式,B 这边才好配合 A 这边进行操作。

如果 A 只提供一个 FTP 服务器,那 B 也只能实现一个 FTP 客户端,把文件上传过去。

如果 A 能提供一个 WEB 服务器,而且里面有一个 URL 能接收 POST 过来的文件,那你在 B 上边就可以做个 HTTP 客户端,把文件提交上去,或者,更常用的办法,由 A 再提供一个上载的页面。

如果你能在 A 上架设一个 SMTP 协议的文件接收器,那你就可以在 B 上用程序做个 SMTP 客户端,像发邮件一样把文件发送给 A。甚至直接用一个邮件客户端(比如 Outlook、Foxmail 什么的)发送文件。

……

你甚至可以在 A 和 B 上分别自己写一个 Socket 通信的程序,进行文件的传输(像飞鸽一样,hehe)
super_ssy 2008-03-10
  • 打赏
  • 举报
回复
还是用JAVA实现FTP客户端吧,比较简单方便
如果你非得要那么做,你得在服务器上实现邮件服务器,外端实际就是要些个邮件的客户端
xql80329 2008-03-10
  • 打赏
  • 举报
回复
我只对我这个功能说
别太钻牛角尖
我现在就是要做 把一个模块(打包后) 上传 到服务器指定目录下. 这个目录我到时候要写在程序里.就是写死了
. 就象 我上传个东西到新浪 上一样. 类似邮件附件一样 上传
healer_kx 2008-03-10
  • 打赏
  • 举报
回复
能不能上传也要看人家是不是支持你上传,都能上传的话,病毒不是无处不在了?

62,634

社区成员

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

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