客户端向服务器端上传文件

客户端向服务器端上传文件

             <div id="article_content" class="article_content clearfix">
        <link rel="stylesheet" href="https://csdnimg.cn/release/phoenix/template/css/ck_htmledit_views-211130ba7a.css">
                        <link rel="stylesheet" href="https://csdnimg.cn/release/phoenix/template/css/ck_htmledit_views-211130ba7a.css">
            <div class="htmledit_views" id="content_views">
                                        <h3><a name="t0"></a><a name="t0"></a>1、定义</h3>
  1. 通过流从本地文件中读取数据,并通过网络传输上传到服务器。
  2. 服务器在接收到数据后再存储到本地

2、示例

客户端:


 
 
  1. public class FileClient {
  2. public static void main(String[] args) throws Exception{
  3. Socket socket = new Socket( "127.0.0.1", 7890);
  4. InputStream is = socket.getInputStream();
  5. OutputStream os = socket.getOutputStream();
  6. File file = new File( "d:\\宋冬野 - 平淡日子里的刺.mp3");
  7. FileInputStream fis = new FileInputStream(file);
  8. //先把名字写过去
  9. os.write(file.getName().getBytes());
  10. int len;
  11. byte[] bs = new byte[ 1024];
  12. while((len=fis.read(bs))!= -1) {
  13. os.write(bs);
  14. }
  15. //文件传输完成之后单独关闭输出流,不然服务器读取不到文件结尾获得-1而卡住
  16. socket.shutdownOutput();
  17. len = is.read(bs);
  18. System. out.println( new String(bs, 0,len));
  19. socket.close();
  20. fis.close();
  21. }
  22. }

服务器端:


 
 
  1. public class FileServer {
  2. public static void main(String[] args) throws Exception{
  3. ServerSocket serverSocket = new ServerSocket( 7890);
  4. Socket socket = serverSocket.accept();
  5. InputStream is = socket.getInputStream();
  6. OutputStream os = socket.getOutputStream();
  7. int len;
  8. byte[] bs = new byte[ 1024];
  9. //先读文件名
  10. len = is.read(bs);
  11. String name = new String(bs, 0, len);
  12. FileOutputStream fos = new FileOutputStream( "d:\\javatest\\"+name);
  13. //读取文件
  14. while((len=is.read(bs))!=- 1) {
  15. fos.write(bs, 0, len);
  16. }
  17. //回馈给客户端
  18. String str = "数据接收完毕!";
  19. os.write(str.getBytes());
  20. fos.close();
  21. socket.close();
  22. serverSocket.close();
  23. }
  24. }

注意:在客户端写完文件之后要使用socket.shutdownOutput();将输出流关闭,不然服务器读取时会卡住。

 

        <div class="person-messagebox">
            <div class="left-message"><a href="https://blog.csdn.net/moxiaomo0804">
                <img src="https://profile.csdnimg.cn/3/F/D/3_moxiaomo0804" class="avatar_pic" username="moxiaomo0804">
            </a></div>
            <div class="middle-message">
                                    <div class="title"><span class="tit "><a href="https://blog.csdn.net/moxiaomo0804" data-report-click="{&quot;mod&quot;:&quot;popu_379&quot;,&quot;ab&quot;:&quot;new&quot;}" target="_blank">moxiaomo0804</a></span>
                    <!-- 等级,level -->
                                            <img class="identity-icon" src="https://csdnimg.cn/identity/blog4.png">                                            </div>
                <div class="text"><span>原创文章 77</span><span>获赞 15</span><span>访问量 4万+</span></div>
            </div>
                            <div class="right-message">
                                        <a class="btn btn-sm  bt-button personal-watch" data-report-click="{&quot;mod&quot;:&quot;popu_379&quot;,&quot;ab&quot;:&quot;new&quot;}">关注</a>
                                                            <a href="https://im.csdn.net/im/main.html?userName=moxiaomo0804" target="_blank" class="btn btn-sm bt-button personal-letter">私信
                    </a>
                                </div>
                        </div>
                    
    </div>
</article>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值