python利用socket写一个文件上传
1.先将一张图片拖入‘文件上传’的目录下,利用socket把这张图片写到叫‘yuan’的文件中

2.代码:
#模拟服务端
import subprocess
import os
import socket
sk=socket.socket()
print(sk)
address=('127.0.0.1',8080)
sk.bind(address)
BASE_DIR=os.path.dirname(os.path.abspath(__file__))#获取绝对路径 sk.listen(3)
print('waiting......')
# conn=sk.accept()
# print(conn) while 1:
conn,addr=sk.accept()
while True:
data=conn.recv(1024)
cmd,filename,filesize=str(data,'utf8').split('|')
path=os.path.join(BASE_DIR,'yuan',filename)#拼接出要写入的文件地址
print(path)
filesize=int(filesize) f=open(path,'ab')
has_receiv=0
while has_receiv!=filesize:
data=conn.recv(1024)
f.write(data)
f.close()
sk.close()
模拟客户端
import socket
import os
sk=socket.socket()
#print(sk)
address=('127.0.0.1',8080)
sk.connect(address)
BASE_DIR=os.path.dirname(os.path.abspath(__file__))#获取相对路径
print(BASE_DIR)
while 1:
inp =input('>>>>>').strip()#post|图片.jpg
cmd,path=inp.split('|')#字符分割放入两变量中
path=os.path.join(BASE_DIR,path)#join在文件最末尾处拼接字符上去
#print('path',path)
filename=os.path.basename(path)#获取文件名,返回path最后的文件名。如何path以/或\结尾,那么就会返回空值
file_size=os.stat(path).st_size#获取文件大小(os.stat() 方法用于在给定的路径上执行一个系统 stat 的调用,st_size: 普通文件以字节为单位的大小;包含等待某些特殊文件的数据。)
file_info='post|%s|%s'%(filename,file_size)#将文件的所有数据(文件名,文件大小)做成一个字符
sk.sendall(bytes(file_info,'utf8 ')) has_sent = 0
# with open(path,'rb') as f:
# data=f.read(1024)
# sk.sendall(data)
# has_sent+=len(data)
# f.close()
# print('上传成功') #第二种读取图片文件的信息
fa=open(path,'rb')
while has_sent!=file_size:
data=fa.read(1024)
sk.send(data)
has_sent+=len(data)
fa.close()
print('上传成功') sk.close()
3效果:

python利用socket写一个文件上传的更多相关文章
- 利用Bootstrap简单实现一个文件上传进度条
© 版权声明:本文为博主原创文章,转载请注明出处 说明: 1. 使用commons-fileupload.jar实现文件上传及进度监听 2. 使用bootstrap的进度条进行页面显示 3. 因为进度 ...
- 基于socket实现大文件上传
import socket 1.客户端: 操作流程: 先拿到文件--->获取文件大小---->创建字典 1.制作表头 header 如何得到 他是一个二进制字符串 序列化得到 字典字符串 ...
- [转]一个文件上传的jquery插件
http://www.jb51.net/article/51547.htm 这篇文章主要介绍了使用ajaxfileupload.js实现ajax上传文件php版,需要的朋友可以参考下 无论是P ...
- 利用apache组件实现文件上传
实现文件上传需要引入: commons-fileupload-1.3.2.jar commons-io-2.5.jar commons-logging-1.2.jar <!DOCTYPE htm ...
- 利用Selenium实现图片文件上传的两种方式介绍
在实现UI自动化测试过程中,有一类需求是实现图片上传,这种需求根据开发的实现方式,UI的实现方式也会不同. 一.直接利用Selenium实现 这种方式是最简单的一种实现方式,但是依赖于开发的实现. 当 ...
- Java一个文件上传工具类
/** * 文件上传 * * @author cary * @since 2012-12-19 下午2:22:12 */ public class FileUploader { static fina ...
- 基于python的selenium两种文件上传操作
方法一.input标签上传 如果是input标签,可以直接输入路径,那么可以直接调用send_keys输入路径,这里不做过多赘述,前文有相关操作方法. 方法二.非input标签上传 这种上传方 ...
- python接口自动化测试——简单的文件上传代码实现,人人网登陆后上传图片举例
import requests '''人人网登陆,图片上传 '''def loginData(): '''登录请求参数''' data = { 'email': '13484545195', 'ico ...
- 如何用css画一个文件上传图案?
如下图,如果是你,你会怎么实现: 通常我们会通过字体图标来显示中间的加号,外层用一个div包裹即可:或者使用伪元素来模拟中间的一横一竖,这都比较麻烦. 其实我们可以直接使用div+css就可以实现. ...
随机推荐
- node 学习资料
Node 学习资料: 资料名称 网址 Node.js 中文API文档 http://nodejs.cn/api/ Node 菜鸟教程 http://www.runoob.com/nodejs/node ...
- pri 知识点
pri github:https://github.com/prijs/pri 添加路由后动态导入,使用的是 react-loadable:https://github.com/jamiebuilds ...
- 如何使用redis计数器防止并发请求
需求描述 最近项目中有个需求,短信发送的并发请求问题:业务需求是需要限制一个号码一分钟内只能获取一次随机码,之前的实现是短信发送请求过来后,先去数据库查询发送记录,根据上一次的短信发送时间和当前时间比 ...
- Jenkins进阶-Git多仓库代码下载编译 (13)
多仓库代码部署这个问题其实在13年做配置管理的时候,就遇到过这样的问题,而最近公司可视化图项目也需要多个仓库代码需要同时下载进行编译,由于仓库之间的代码编译有依赖关系,所以必须同时下载下来按照顺序进行 ...
- C# 泛型类和泛型方法
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- Golang如何使用websocket
下载websocket包 $ go get golang.org/x/net/websocket 如果下载失败,可能是被墙了. package golang.org/x/net/websocket: ...
- HanLP二元核心词典详细解析
本文分析:HanLP版本1.5.3中二元核心词典的存储与查找.当词典文件没有被缓存时,会从文本文件CoreNatureDictionary.ngram.txt中解析出来存储到TreeMap中,然后构造 ...
- 错误 Run-time error nnn at xxxx; 错误
出现runtime error临时解决办法,于注册表位置中找到如下键值HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Gdiplus,然后把键DisableTIFFCo ...
- 【web】之获取服务器tomcat下webapps目录路径
String realPath = req.getServletContext().getRealPath("/"); String realPathParent=(new Fil ...
- LeetCode——13. Roman to Integer
一.题目链接:https://leetcode.com/problems/roman-to-integer/ 二.题目大意: 给定一个罗马数字,返回它的整数形式. 三.题解: 这道题与12题恰好相反, ...