文件下载案例 | 学习笔记

简介: 快速学习 文件下载案例

开发者学堂课程【Python入门 2020年版文件下载案例】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/639/detail/10464


文件下载案例


内容介绍

一. 原始代码

二. 说明

三. 最终代码


.原始代码

1.文件下载客户端原始代码

import socket

s=socket.socket(socket.AF INET, socket.SOCK STREAM)

s.connect(('192.168.31.199'9090))

# s.send('hello'encode('utf8'))

file name=input('清输入您要下载的文件名:") s.send(file name.encode('utf8'))

content=srecv(1024)decode('utf8')  //接收服务器返回的文件

with open(file name, 'w', encoding='utf8') as file:

file.write(content)

s.close()

说明:

发送与接收过程为客户端告诉服务器想要文件的名称,服务器读取到名称后将文件发送给客户端。

先写入 socket 后连接到端口号和 ip 地址,再用 s.send 发送消息启动文件下载服务器后文件下载服务器可以收到消息

 image.png

content=srecv(1024)decode('utf8')接收服务器发送的文件

image.png

2.文件下载服务器原始代码

import socket

server_socket=socket.socket(socket.AF_INET,socket.SOCK_STREAM)

server_socket.bind(('192.168.31.199'9090)) server

server socket.listen(128)

#接收客户端的请求

client_socket,client_addr=server_socket.accept()

data=client_socket.recv(1024).decode('utf8')

if os.path.isfile(data):

#print('读取文件,返回给客户端)

with open(data, 'r', encoding='utf8') as file://data 保存发送端想要文件的名称

content =file.read()//读取文件

client socket.send(content.encode('utf8'))//通过客户端的 socket 返回给客户端

else:

print('文件不存在')

说明:

首先写入 socket,绑定 ip 地址和和端口号,写入监听和接收客户端请求


.说明

1.虚拟机作为客户端,windows 作为服务器,将 windows 中的文件 demo 下载到虚拟机中再用 client_socket.recv 读取数据

2.以上两段代码不能将图片打开,应该将所打开图片以二级制形式打开,并且加入读取网卡中字节的循环:

content =s.recv(1024)

if not content:

Break

3.代码运行过程

先输入要下载文件的名字,把文件名发给服务端,服务端接收之后通过 file.write(content )把内容写进来就完成了

4.不完善之处

在文件下载客户端中写入不存在的文件时,也能创建此文件,但此文件为空


.最终代码(可以传送图片)

1.文件下载服务器最终代码

import socket

server_socket=socket.socket(socket.AF_INET,socket.SOCK_STREAM)

server_socket.bind(('192.168.31.199',9090)) server socket.listen(128)

#接收客户端的请求

client socket, client addr=server socket.accept()

data=client socket.recv(1024).decode('utf8')

print('接收到了来自{}地址{}端口的数据,内容是:{}'.format(client addr[0], client addr[1],data))

if os.path.isfile(file name):

#print(读取文件,返回给客户端)

with open(file_name, 'rb') as file:

content =file.read()

client_socket.send(content)

else:

print('文件不存在')

2.文件下载客户端最终代码

import socket

s=socket.socket(socket.AF INET, socket.SOCK STREAM)

s.connect(('192.168.31.199',9090))

# s.send('hello'encode('utf8'))

file name=input("清输入您要下载的文件名:)

s.send(file name.encode('utf8'))

with open(file name, 'wb')as file:

while True:

content =s.recv(1024)

if not content:

break

file.write(content )

s.close()

相关文章
|
网络协议
|
前端开发 JavaScript
前端上传基础
只是上传流程,
160 0
|
1月前
|
JSON 前端开发 Go
前端文件下载的方式
【10月更文挑战第5天】
108 58
|
1月前
|
监控 前端开发 安全
C#一分钟浅谈:文件上传与下载功能实现
【10月更文挑战第2天】在Web应用开发中,文件的上传与下载是常见需求。本文从基础入手,详细讲解如何在C#环境下实现文件上传与下载。首先介绍前端表单设计及后端接收保存方法,使用`<input type="file">`与`IFormFile`接口;接着探讨错误处理与优化策略,如安全性验证和路径管理;最后讲解文件下载的基本步骤,包括确定文件位置、设置响应头及发送文件流。此外,还提供了进阶技巧,如并发处理、大文件分块上传及进度监控,帮助开发者构建更健壮的应用系统。
97 15
|
1月前
|
前端开发 JavaScript
💥【exceljs】纯前端如何实现Excel导出下载和上传解析?
本文介绍了用于处理Excel文件的库——ExcelJS,相较于SheetJS,ExcelJS支持更高级的样式自定义且易于使用。表格对比显示,ExcelJS在样式设置、内存效率及流式操作方面更具优势。主要适用于Node.js环境,也支持浏览器端使用。文中详细展示了如何利用ExcelJS实现前端的Excel导出下载和上传解析功能,并提供了示例代码。此外,还提供了在线调试的仓库链接和运行命令,方便读者实践。
295 5
|
6月前
|
JSON Rust 前端开发
【sheetjs】纯前端如何实现Excel导出下载和上传解析?
本文介绍了如何使用`sheetjs`的`xlsx`库在前端实现Excel的导出和上传。项目依赖包括Vite、React、SheetJS和Arco-Design。对于导出,从后端获取JSON数据,通过`json_to_sheet`、`book_new`和`writeFile`函数生成并下载Excel文件。对于上传,使用`read`函数将上传的Excel文件解析为JSON并发送至后端。完整代码示例可在GitHub仓库[fullee/sheetjs-demo](https://github.com/fullee/sheetjs-demo)中查看。
419 10
|
前端开发
前端:下载文件(多种方法)
前端:下载文件(多种方法)
866 0
|
前端开发
前端下载文件的几种方式
前端下载文件的几种方式
1180 0
|
编解码 前端开发 API
阿里云视频上传实战
最近在做项目优化,关于阿里云视频上传方面一直存在视频上传过慢问题.由于之前采用的是服务端进行视频上传,主要的逻辑是客户端上传视频到服务端进行视频文件暂存,然后服务端上传视频到阿里云.
阿里云视频上传实战
|
移动开发 前端开发 JavaScript
前端实现PDF文件下载的两种方式
前端实现PDF文件下载的两种方式
2352 0
前端实现PDF文件下载的两种方式