黑马程序员技术交流社区

标题: 零基础,新手,上传图片,竟然变大了? [打印本页]

作者: 金肖    时间: 2012-5-10 20:16
标题: 零基础,新手,上传图片,竟然变大了?
/**
客户端,本来图片为 120KB,上传后变成122KB,求解呀!
*/

public class UploadFileClient {

        public static void main(String[] args) throws IOException {
                //1.创建Socket客户端服务对象
                Socket s = new Socket("127.0.0.1",10051);
               
                System.out.println("客户端启动!");
               
                //System.out.println(InetAddress.getLocalHost());
               
                //2.创建源,硬盘上的文件
               
                BufferedInputStream bufr = new BufferedInputStream(new FileInputStream("D:\\a.jpg"));
                //3.获取Socket输出流
               
                BufferedOutputStream bufout = new BufferedOutputStream(s.getOutputStream());
                OutputStream out = s.getOutputStream();
                //4.定义缓冲区
                int len = 0;
               
                //5.将文件写入进Socket流中
               
                while((len = bufr.read())!=-1)
                {
                        bufout.write(len);
                }
               
                //告诉服务端数据写完了
                s.shutdownOutput();
               
                //6.获取服务端的反馈信息
                BufferedReader bufin = new BufferedReader(new InputStreamReader(s.getInputStream()));
                String line = bufin.readLine();
               
               
                System.out.println(line);
               
                //7.关闭流
               
                bufr.close();
                bufout.close();
               
        }
}
/**
服务端
*/

public class UploadFileServer {
public static void main(String[] args) throws IOException {
  // 1.创建服务端对象
  ServerSocket ss = new ServerSocket(10051);
  System.out.println("服务端启动!");
  // 2.监听客户端
  Socket s = ss.accept();
  System.out.println(s.getLocalAddress());
  System.out.println(s.getInetAddress());
  // 3.获取客户端中读取流
  BufferedInputStream bufin = new BufferedInputStream(s.getInputStream());
  // 4.创建目的地的,输入流
  BufferedOutputStream bufw = new BufferedOutputStream(
    new FileOutputStream("E:\\aa.jpg"));
  // 5.读取Socket流中数据,将数据写到目的地中
  int len = 0;
  while ((len = bufin.read()) != -1) {
   bufw.write(len);
  }
  // 6.将上传的结果反馈给客户端
  PrintWriter pwout = new PrintWriter(s.getOutputStream(), true);
  pwout.println("上传成功!");
  // 7.关闭资源
  bufw.close();
  s.close();
}
}




作者: 黄坚声    时间: 2012-5-10 21:01
我没有遇到过,你的问题有点灵异,不太相信。
作者: 刘旭    时间: 2012-5-11 08:02
我测试了一下,图片大小没有变大。但是,通过属性查看图片,图片的占用空间可能变大或者变小。
作者: 小小企鹅    时间: 2012-5-11 08:45
本帖最后由 小小企鹅 于 2013-3-1 09:09 编辑

public class UploadFileClient {

        public static void main(String[] args) throws IOException {
                //1.创建Socket客户端服务对象
                Socket s = new Socket("127.0.0.1",10051);
               
                System.out.println("客户端启动!");
               
                //System.out.println(InetAddress.getLocalHost());
               
                //2.创建源,硬盘上的文件
               
                BufferedInputStream bufr = new BufferedInputStream(new FileInputStream("D:\\a.jpg"));
                //3.获取Socket输出流
               
                BufferedOutputStream bufout = new BufferedOutputStream(s.getOutputStream());
                OutputStream out = s.getOutputStream();
                //4.定义缓冲区
                int len = 0;
               
                //5.将文件写入进Socket流中
               
                while((len = bufr.read())!=-1)
                {
                        bufout.write(len);
                }
                bufr.close();
                bufout.close();
                //告诉服务端数据写完了
                s.shutdownOutput();
               
                //6.获取服务端的反馈信息
                BufferedReader bufin = new BufferedReader(new InputStreamReader(s.getInputStream()));
                String line = bufin.readLine();
               
               
                System.out.println(line);
               
                //7.关闭流
               

               
        }
}




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2