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写一个文件上传的更多相关文章

  1. 利用Bootstrap简单实现一个文件上传进度条

    © 版权声明:本文为博主原创文章,转载请注明出处 说明: 1. 使用commons-fileupload.jar实现文件上传及进度监听 2. 使用bootstrap的进度条进行页面显示 3. 因为进度 ...

  2. 基于socket实现大文件上传

    import socket 1.客户端: 操作流程: 先拿到文件--->获取文件大小---->创建字典 1.制作表头 header  如何得到 他是一个二进制字符串 序列化得到 字典字符串 ...

  3. [转]一个文件上传的jquery插件

    http://www.jb51.net/article/51547.htm 这篇文章主要介绍了使用ajaxfileupload.js实现ajax上传文件php版,需要的朋友可以参考下     无论是P ...

  4. 利用apache组件实现文件上传

    实现文件上传需要引入: commons-fileupload-1.3.2.jar commons-io-2.5.jar commons-logging-1.2.jar <!DOCTYPE htm ...

  5. 利用Selenium实现图片文件上传的两种方式介绍

    在实现UI自动化测试过程中,有一类需求是实现图片上传,这种需求根据开发的实现方式,UI的实现方式也会不同. 一.直接利用Selenium实现 这种方式是最简单的一种实现方式,但是依赖于开发的实现. 当 ...

  6. Java一个文件上传工具类

    /** * 文件上传 * * @author cary * @since 2012-12-19 下午2:22:12 */ public class FileUploader { static fina ...

  7. 基于python的selenium两种文件上传操作

    方法一.input标签上传     如果是input标签,可以直接输入路径,那么可以直接调用send_keys输入路径,这里不做过多赘述,前文有相关操作方法. 方法二.非input标签上传 这种上传方 ...

  8. python接口自动化测试——简单的文件上传代码实现,人人网登陆后上传图片举例

    import requests '''人人网登陆,图片上传 '''def loginData(): '''登录请求参数''' data = { 'email': '13484545195', 'ico ...

  9. 如何用css画一个文件上传图案?

    如下图,如果是你,你会怎么实现: 通常我们会通过字体图标来显示中间的加号,外层用一个div包裹即可:或者使用伪元素来模拟中间的一横一竖,这都比较麻烦. 其实我们可以直接使用div+css就可以实现. ...

随机推荐

  1. range— 建立一个包含指定范围单元的数组 (數字、字母)

    range()函数快速创建从1到12的数字数组 $numbers=range(0,12); echo '<pre>'; print_r($numbers); echo '</pre& ...

  2. virtualbox下centos虚拟机安装增强工具教程和常见错误解决

    VirtualBox 4.3.6上安装CentOS 6.5 https://my.oschina.net/tashi/blog/190060 错误1.Building the main Guest A ...

  3. java (图片转PDF)

    1.导入jar包 itextpdf-5.5.12.jar 2.写代码 package com.util; import java.io.File; import java.io.FileNotFoun ...

  4. Spring Cloud(Dalston.SR5)--Eureka 服务提供者

    要使微服务应用向注册中心发布自己,首先需要在 pom.xml 配置文件中增加对 spring-boot-starter-eureka 的依赖,然后在主类中增加 @EnableDiscoveryClie ...

  5. ML: 降维算法-LDA

    判别分析(discriminant analysis)是一种分类技术.它通过一个已知类别的“训练样本”来建立判别准则,并通过预测变量来为未知类别的数据进行分类.判别分析的方法大体上有三类,即Fishe ...

  6. Java从命令行接受多个数字并求和

    一,设计思路 1,定义一个int型变量作为数字之和 2,运用for循环将字符转换成int型加到和中 3,输出和的值 二,程序流程图 三,源程序代码 //信1605-3 程浩public class J ...

  7. JavaScript 基本数据类型和引用类型的区别详解

    js基本数据类型: js基本数据类型包括:undefined,null,number,boolean,string.基本数据类型是按值访问的,就是说我们可以操作保存在变量中的实际的值 1. 基本数据类 ...

  8. Task Class

    https://docs.microsoft.com/zh-cn/dotnet/api/system.threading.tasks.task?redirectedfrom=MSDN&view ...

  9. 原来 php 中的 json_encode() 只支持utf-8.不支持gbk啊

    原文地址:在gbk/gb2312编码中如何使用json_encode/json_decode

  10. ToString()、Convert.ToString()、(string)、as string 的区别

    通常 object 到 string 有四种方式(假设有object obj):obj.ToString().Convert.ToString().(string)obj.obj as string. ...