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就可以实现. ...
随机推荐
- HDP对应的各组件的版本信息
截至目前最新的HDP版本为2.6: https://zh.hortonworks.com/products/data-platforms/hdp/ 如果版本更新,可采用以下步骤: 首先访问horton ...
- 关于SD-SDI,HD-SDI,3G-SDI行号的问题
关于SD-SDI,HD-SDI,3G-SDI行号的问题 1.资料来源 2.行号的插入信号 SD-SDI mode的信号不需要行号 HD-SDI,3G-SDI mode的信号必须插入行号 3.edh的插 ...
- python show slave status
#!/usr/bin/env python import MySQLdbimport contextlib @contextlib.contextmanagerdef mysql(Host,Port, ...
- Flsk-Werkzeug-请求参数获取备忘
Werkzeug:response,request,routing 获取请求参数:data,form,args,files,cookies,headers,method,url routing:Rul ...
- 【java】之彻底明白进制转换
首先区分 2进制 只有0和1组成 如:0101018进制 以0开头,0~7组成 如:01234510进制 以1~9开头,0~9组成 如:10016进制 以0X开头,0~9或者a ...
- nginx 操作笔记
测试nginx 配置是否成功 service nginx configtest
- Dubbo(5)优化:接口抽取以及依赖版本统一
优化点: 1.在上面provider和consumer程序中都存在DemoProviderService接口了,两个项目中存在同样的东西,代码多余以及不方便管理: 正式的项目中存在很多的接口的,将统一 ...
- 用sqoop将mysql的数据导入到hive表
一.先将mysql一张表的数据用sqoop导入到hdfs 1.1.先在mysql中准备一张测试用的表 mysql> desc user_info; +-----------+---------- ...
- Zabbix系统中的历史数据和趋势数据
原文:http://blog.chinaunix.net/uid-9411004-id-4139807.html 或许读者还记得,我们在介绍如何创建一个监控项目时,我们介绍过在“配置项目”表单页面上有 ...
- base_基础
目录 A B C D E F G H I J K L M N S: Sqlite: 1;orhanobut/hawk; A: Adapter: 图片处理 Android中自定义布局中加载图片Bitma ...