linux、windows系统间传输文件
python -m SimpleHTTPServer 8000
#将当前目录作为http下载服务器的根目录,可以使用wget 命令直接下载文件,如果wget 的uri为空,返回http服务器启动所在目录中文件
eg: wget 127.0.0.1:8000/sample.txt #下载sample.txt文件
eg : wget 127.0.0.1:8000 #列出目录内容
二、利用Python开发http简单的文件服务器(支持上传、下载)
#!/usr/bin/python import re
import sys
import urllib
import httplib2
import os
from BaseHTTPServer import BaseHTTPRequestHandler, HTTPServer class Webhandler(BaseHTTPRequestHandler):
#客户端Get请求的处理函数
def do_GET(self):
path, args = urllib.splitquery(self.path) self.send_response(200)
self.send_header('Content-type', 'application/octet-stream')
self.end_headers() #将当前目录与uri拼接获取文件(夹)的绝对路径
target_file = os.getcwd() + path
if os.path.exists(target_file) == False:
self.wfile.write(target_file + 'isn\' exists')
elif os.path.isdir(target_file):
#如果是个文件夹,就直接递归列出文件夹的详细内容
file_list = os.popen("ls -lR").read()
self.wfile.write(file_list)
elif os.path.isfile(target_file):
#如果是个文件,就打开文件然后将文件内容发送给客户端
f = open(target_file, 'rb')
self.wfile.write(f.read())
f.close() #客户端POST请求的处理函数
def do_POST(self):
path, args = urllib.splitquery(self.path)
filename = os.path.basename(path) self.send_response(200)
self.send_header('Content-type', 'text/html')
self.end_headers() #读取post请求的body,如果不为空就按照uri最后的名称作为文件名
#将body写入到文件并保存到当前文件夹
datas = self.rfile.read(int(self.headers['content-length']))
if datas != None:
f = open(filename, 'wb')
f.write(datas)
f.close() if __name__ == '__main__':
try:
port = int(sys.argv[1])
print 'port is %d' % port
server = HTTPServer(('', port), Webhandler)
print 'Welcome to my website !'
server.serve_forever() except KeyboardInterrupt:
print '^C received, shutting down server'
server.socket.close()
注:1. 上述这段Python代码只是简单实现了文件上传、下载功能,需要的话可以添加自己的处理逻辑。
将上述代码保存到一个文本文件file_server.py中,然后把该文件拷贝到保存文件的目录下,执行 python ./file_server.py 8000,启动监听8000端口的http服务器
如果执行的时候提示缺少相应的模块可以通过pip的方式安装:
- sudo yum install python-setuptools -y; easy_install pip 安装python包管理器pip
- 创建文件 ~/.pip/pip.conf,然后添加如下内容(将pip镜像源改成国内的,加快速度)
[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
三. 使用方法
客户端可以通过如下命令进行下载上传操作:
#下载文件
wget 127.0.0.1:8000/note.txt #下载http服务器上的note.txt文件 #上传文件:
curl --data-binary @note.txt 127.0.0.1:8000/note1.txt #将本地的note.txt文件上传到http服务器上并重命名为note1.txt
linux、windows系统间传输文件的更多相关文章
- 使用WinSCP在Windows和Linux系统之间传输文件
小梅哥编写,未经许可,严禁用于任何商业用途 2018年6月30日 在日常SoC开发中,我们经常需要在Windows和Linux系统之间传输文件,例如在Windows系统上的DS-5集成开发环境中编写好 ...
- 两台Linux系统之间传输文件的几种方法
两台Linux系统之间传输文件的几种方法:参考https://www.cnblogs.com/bignode/articles/9241333.html
- Linux间传输文件 scp
scp scp使用ssh来传输数据,使用相同的认证方式,所以配置好ssh后,根据用户名和密码来读写远程文件.基本命令如下,输完命令,回车,输入远程用户对应的密码: 从本机复制到远程: 文件:scp F ...
- mac与windows通过ftp传输文件
1.两个系统相互传文件,比较通用的方式是用QQ,两台电脑一台各登陆一个qq,发文件就行了,在同一个网段时,qq会自动转换为按局域网的方式传输. 2.本人不愿安装qq,以ftp方式进行传输,先在wndo ...
- linux/windows系统oracle数据库简单冷备同步
linux/windows系统oracle数据库简单冷备同步 我们有一个财务系统比较看重财务数据的安全性,同时我们拥有两套系统,一个生产环境(linux),一个应急备份环境(windows).备份环境 ...
- linux/Windows系统如何安装PHP-openssl扩展
今天倒腾了半天公司的OA办公系统,原来现在很多的smtp服务器是需要ssl方式加密的,而支持ssl需要php加载openssl扩展.所以本文我们将和大家一起分享如何在linux/Windows系统下安 ...
- Windows系统字体与文件对照表
源:Windows系统字体与文件对照表 宋体 (TrueType) = SIMSUN.TTF 黑体 (TrueType) = simhei.ttf 楷体_GB2312 (TrueType) = sim ...
- 【原创】Linux基础之linux服务器服务器间拷贝文件
linux服务器服务器间拷贝文件,有几种方式: 1 如果是定时任务,可以用rsync 2 如果是基于ssh登录,可以用scp,优点是可以实现远程到远程的拷贝,缺点是需要账号密码 upload: scp ...
- Unity调用windows系统dialog 选择文件夹
#region 调用windows系统dialog 选择文件夹 [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)] public ...
随机推荐
- As a Start - 毫厘之间,宇宙之外
序 突然想聊聊多重宇宙——多重宇宙,这听上去像是一个科幻概念,但是严肃思考这一个问题时,将会带我们进入一个全新的格局和世界. 对宇宙学家而言,研究多重宇宙并不仅仅是为了猜测平行世界里某一历史事件是否有 ...
- CCF系列之数位之和(201512-1)
试题编号: 201512-1试题名称: 数位之和时间限制: 1.0s内存限制: 256.0MB问题描述: 问题描述 给定一个十进制整数n,输出n的各位数字之和. 输入格式 输入一个整数n. 输出格式 ...
- [转] Freemarker的常用技巧总结
1,截取字符串 有的时候我们在页面中不需要显示那么长的字符串,比如新闻标题,这样用下面的例子就可以自定义显示的长度 < lt. <= lte. > gt. >= gte < ...
- j2e应用概述
过年也过完了,现在正式开始进入j2e的整理.现在开篇第一篇,整理一下j2e应用和开发环境.j2e应用提供的跨平台性,开放性已经各种远程访问的技术,为异构系统的良好整合提供了保证.注意这个是有一个异构系 ...
- <<Senium2自动化测试>>读书笔记一
为进一步加强Python知识扩展和学习,在朋友的推荐下选择了<<Selenium2自动化测试实战>>,作者胡志恒,基于Python语言实现,以实例的方式详细讲解WebDrive ...
- GDB 的使用
gdb使用: 1.编译时必须加-g选项,生成调试需要的信息.如 g++ xxx.cpp -o xxx -g 2.调试最好结合core文件 3.调试命令:gdb xxx x ...
- Protobuf 从入门到实战
简介 从第一次接触Protobuf到实际使用已经有半年多,刚开始可能被它的名字所唬住,其实就它是一种轻便高效的数据格式,平台无关.语言无关.可扩展,可用于通讯协议和数据存储等领域. 优点 平台无关,语 ...
- awk匹配某一段内容,打印第一段
要求: awk 文本在文本中搜索abc搜到后再从搜到的那一行开始一直输出后面的行,直到某一行含有bcd就停止 测试文本: [root@localhost]# cat awktest sadfj sdj ...
- Go语言学习索引
<Go并发编程实战>示例项目 项目地址: https://github.com/hyper-carrot/goc2p 项目安装: 用git clone获取项目,并将其根目录作为一个工作区. ...
- 搭建内网的NTP时间服务器
NTP时间服务器 标签: linux 笔者Q:972581034 交流群:605799367.有任何疑问可与笔者或加群交流 1.简介 NTP(Network Time Protocol,网络时间协议) ...