黑马程序员技术交流社区
标题:
网络编程图片上传
[打印本页]
作者:
嘿╰_╯往哪里跑
时间:
2014-2-10 10:31
标题:
网络编程图片上传
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
/**
* 客服端:上传图片
* 思路:
* 1、建立服务,指定连接端口。
* 2、读取本地图片数据
* 3、使用网络流的输出流把图片数据输出
4、传输结束:socket的shutdownOutput()
* 4、接收服务端的反馈信息(通过输入流)
* 5、关闭资源
*
*/
class PicClient {
public static void main(String[] args) throws Exception{
Socket s=new Socket("192.168.1.21",10005);
FileInputStream fis=new FileInputStream("f:\\20130221160.jpg");
OutputStream out=s.getOutputStream();
int len=0;
byte[] buf=new byte[1024];
while((len=fis.read(buf))!=-1){
out.write(buf,0,len);
}
s.shutdownOutput();//告诉服务端数据已写完
InputStream in=s.getInputStream();
//接收服务端的返回信息
byte[] bin=new byte[1024];
int lenin=in.read(bin);
System.out.println(new String(bin,0,lenin));
fis.close();
s.close();
}
}
class PicSever {
public static void main(String[] args) throws Exception {
ServerSocket ss=new ServerSocket(10005);
Socket s=ss.accept();
String ip=s.getInetAddress().getHostAddress();
System.out.println(ip+"----connection成功");
//定义图片文件目的
FileOutputStream fos=new FileOutputStream("server2.jpg");
//利用socket读取流,读取客服端的图片数据
InputStream in = s.getInputStream();
byte[] bufIn = new byte[1024];
int lenIn = 0;
while((lenIn=in.read())!=-1)
{
fos.write(bufIn,0,lenIn);
}
OutputStream out=s.getOutputStream();
out.write("图片上传成功".getBytes());
s.close();
ss.close();
}
}
复制代码
图片上传后,图片打不开,不知道什么原因,各位大神,怎么弄哇???
作者:
糖伯貓
时间:
2014-2-10 11:13
问题在这里:
while((lenIn=in.read())!=-1)
{
fos.write(bufIn,0,lenIn);
}
in.read(bufIn);没有把数组传进去
改了后可用
作者:
zhkqy
时间:
2014-2-10 11:15
while((lenIn=in.read())!=-1)
{
fos.write(bufIn,0,lenIn);
}
复制代码
哥们的服务端 while((lenIn=in.read())!=-1) fos.write(bufIn,0,lenIn);
错误是:
没有读取数据到数组中
fos.write(bufIn,0,lenIn);这句当然也就拿不到数据
while((lenIn=in.read(bufIn))!=-1)
{
fos.write(bufIn,0,lenIn);
}
复制代码
作者:
嘿╰_╯往哪里跑
时间:
2014-2-10 11:32
仔细一看,真的是,谢谢啦哈
作者:
itpower
时间:
2014-2-10 12:18
byte[] bufIn = new byte[1024];
int lenIn = 0;
while((lenIn=in.read())!=-1)
{
fos.write(bufIn,0,lenIn);
}
复制代码
数据木有放进数组里..
作者:
guhaibin
时间:
2014-2-10 12:26
in.read()中数组bufIn没有传进去。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2