java awt swing问题

lntswangxin 2009-08-31 10:55:38
在java awt的界面上如何传送文件?用那个类啊?

就是前面有一个框,后面有两个按钮,一个是“浏览”,一个是“上传”
基于Tcp/Ip javaSocket编程,可以把本地的文件发送到服务器端

怎么做呢?

最好有例子代码>>>

先谢谢了!!!
...全文
172 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
lntswangxin 2009-09-02
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 lntswangxin 的回复:]
我试着写了一个,但是有问题,请大家帮我看看

在Client端:
(前提是socket s 已经连上)
FileInputStream file = new FileInputStream(der);
dos = new DataOutputStream(s.getOutputStream());
dos.writeUTF("上传");//给服务器端一个提示信息,当收到“上传”时,开始接收文件
dos.writeUTF(der.getName());//提取文件名发到服务器端
byte[] bytes = new byte[1024];
int cont = 0;
while((cont = file.read(bytes))!=-1){
    dos.write(bytes,0,cont);
}
服务器端:

                                           String str = dis.readUTF(); msgNum++;
for(int i=0;i <clients.size();i++){
ClientThread c = clients.get(i);
c.send(str);
}
if("上传".equals(str)){//判断条件
str = dis.readUTF();//得到文件名
FileOutputStream file = new FileOutputStream("D:\\receive\\"+str);//上传文件存储路径
   
    byte[] bytes = new byte[1024];
    int cum = dis.read(bytes);
    while(cum!=-1){
    file.write(bytes,0,cum);
    cum = dis.read(bytes);
    }
    file.flush();
    file.close();
}


问题是这样的:

客户端用同一个DataOutputStream dos向服务器端发送字符串(就是文本框输入,然后传到服务器端)
服务器端也是用同一个DataInputStream dis接收数据

但是运行之后,上传完一次文件后,就不能在发送字符串和上传文件了
也就是是上传完一次文件后,客户端就死了,不能工作了,eclipse报错是红色那行
我怀疑是绿色的那行出的问题,上传完文件后,dis就堵塞到那了,在向服务器端传送任何信息都接受不到

大家帮我看看如何修改一下

[/Quote]

帮帮忙啊!!!
windforcecn 2009-09-01
  • 打赏
  • 举报
回复
将本地文件读入字节流序列化,Socket服务器得到这个Message,反序列化

为啥一定要Socket编程?用apache的samrtUpload极其容易实现
Efence 2009-09-01
  • 打赏
  • 举报
回复
界面只是选择,上传要用IO流操作其实就是将选择的文件作为输入流,然后再用输出流写到指定位置
sainer 2009-09-01
  • 打赏
  • 举报
回复
JFileChooser+io+socket
Miracle1216 2009-09-01
  • 打赏
  • 举报
回复
JFileChooser也只是实现一个界面,并没有上传功能,具体上传你还得自己实现。
lntswangxin 2009-09-01
  • 打赏
  • 举报
回复
我试着写了一个,但是有问题,请大家帮我看看

在Client端:
(前提是socket s 已经连上)
FileInputStream file = new FileInputStream(der);
dos = new DataOutputStream(s.getOutputStream());
dos.writeUTF("上传");//给服务器端一个提示信息,当收到“上传”时,开始接收文件
dos.writeUTF(der.getName());//提取文件名发到服务器端
byte[] bytes = new byte[1024];
int cont = 0;
while((cont = file.read(bytes))!=-1){
dos.write(bytes,0,cont);
}
服务器端:

String str = dis.readUTF(); msgNum++;
for(int i=0;i<clients.size();i++){
ClientThread c = clients.get(i);
c.send(str);
}
if("上传".equals(str)){//判断条件
str = dis.readUTF();//得到文件名
FileOutputStream file = new FileOutputStream("D:\\receive\\"+str);//上传文件存储路径

byte[] bytes = new byte[1024];
int cum = dis.read(bytes);
while(cum!=-1){
file.write(bytes,0,cum);
cum = dis.read(bytes);
}
file.flush();
file.close();
}


问题是这样的:

客户端用同一个DataOutputStream dos向服务器端发送字符串(就是文本框输入,然后传到服务器端)
服务器端也是用同一个DataInputStream dis接收数据

但是运行之后,上传完一次文件后,就不能在发送字符串和上传文件了
也就是是上传完一次文件后,客户端就死了,不能工作了,eclipse报错是红色那行
我怀疑是绿色的那行出的问题,上传完文件后,dis就堵塞到那了,在向服务器端传送任何信息都接受不到

大家帮我看看如何修改一下
imasmallbird 2009-08-31
  • 打赏
  • 举报
回复
javax.swing.JFileChooser

http://hi.baidu.com/%D5%D4%D5%BC%CF%A6/blog/item/f886611a6aec59dcad6e75df.html


百度搜一下,有很多例子~~

62,614

社区成员

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

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