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

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

             <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
    评论
要让服务器接收客户端上传的文件,你可以使用以下步骤: 1. 在服务器端创建一个用于接收上传文件的 API 接口。 2. 在客户端使用 HTTP 协议将文件上传到服务器的 API 接口。 3. 在服务器端获取上传的文件,并保存到指定的路径中。 下面是一些具体的实现细节: 1. 在服务器端,你可以使用 Flask、Django 等 Web 框架来创建 API 接口。使用 Flask 的话,你可以这样写代码: ```python from flask import Flask, request app = Flask(__name__) @app.route('/upload', methods=['POST']) def upload(): file = request.files['file'] # 保存文件到指定路径 file.save('/path/to/save/file') return 'OK' ``` 这个 API 接口会接收 POST 请求,请求的数据中包含一个名为 "file" 的文件。在代码中,我们使用 Flask 的 request 对象来获取上传的文件,并使用 save() 方法将文件保存到指定路径中。 2. 在客户端,你可以使用 Python 的 requests 库来发送 HTTP 请求。使用 requests 的话,你可以这样写代码: ```python import requests url = 'http://your-server.com/upload' files = {'file': open('/path/to/your/file', 'rb')} response = requests.post(url, files=files) ``` 这个代码会将指定的文件上传到服务器的 /upload 接口。其中,files 参数是一个字典,键为 "file",值为打开的文件对象。requests 会自动将文件转换为 multipart/form-data 格式发送到服务器。 3. 在服务器端,我们使用 save() 方法将文件保存到指定路径中。你可以根据实际情况修改保存路径。如果保存成功,API 接口会返回一个字符串 "OK"。 这样,你就可以实现一个简单的文件上传功能了。当然,实际情况可能更加复杂,比如需要对上传的文件进行验证、限制文件大小等等。这些都可以通过修改代码来实现

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值