有的时候想在Linux和手机之间互传文件那可真是一个难啊
看了这篇文章相信你会喜欢这种传输文件的方式
只需要电脑配置好Python即可
废话,不使用数据线和第三方工具,不用考虑各种驱动等等问题的文件传输肯定香啊
本文参考了微信公众号 “学习python的正确姿势” 11月18日的原创文章提供的方法, 地址为 https://mp.weixin.qq.com/s/7wFtS0nVRsHQF-Rh82kDKg
以下均为我学习之后的个人操作
1.移动端获取PC端文件
python3.7 -m http.server
在终端只要执行这个命令,电脑就会默认监听8000端口,也可以修改监听的端口
# 监听3579端口
python3.7 -m http.server 3579
只要保持手机和电脑处于同一局域网(通俗来说就是连接着同一个wifi),在手机浏览器输入电脑的ip和端口就可以看到电脑端的文件啦
电脑的IP地址通过ifconfig命令获取
在手机浏览器中输入 “IP:端口”就可以访问了
http://192.168.1.111:8000/
然后实战操作一番,将电脑中的pdf文档下载到本地
下载成功了
手机访问成功和文件下载成功之后终端都会有提示
这种方法只能实现从电脑端下载文件,并不能把手机文件传输到电脑,下面的方法可以实现传输文件到电脑
2.移动端上传文件到PC端
这个呢有人已经做好了并发布在了github,感觉有用的朋友去github给作者点个star
https://github.com/Tallguy297/SimpleHTTPServerWithUpload
以下是源代码
#!/usr/bin/env python3
"""Simple HTTP Server With Upload.
This module builds on http.server by implementing the standard GET
and HEAD requests in a fairly straightforward manner.
see: https://gist.github.com/UniIsland/3346170
"""
__version__ = "0.1"
__all__ = ["SimpleHTTPRequestHandler"]
__author__ = "bones7456"
__home_page__ = "https://gist.github.com/UniIsland/3346170"
import os
import posixpath
import http.server
import socketserver
import urllib.request, urllib.parse, urllib.error
import html
import shutil
import mimetypes
import re
import argparse
import base64
from io import BytesIO
class SimpleHTTPRequestHandler(http.server.BaseHTTPRequestHandler):
"""Simple HTTP request handler with GET/HEAD/POST commands.
This serves files from the current directory and any of its
subdirectories. The MIME type for files is determined by
calling the .guess_type() method. And can reveive file uploaded
by client.
The GET/HEAD/POST requests are identical except that the HEAD
request omits the actual contents of the file.
"""
server_version = "SimpleHTTPWithUpload/" + __version__
def do_GET(self):
"""Serve a GET request."""
f = self.send_head()
if f:
self.copyfile(f, self.wfile)
f.close()
def do_HEAD(self):
"""Serve a HEAD request."""
f = self.send_head()
if f:
f.close()
def do_POST(self):
"""Serve a POST request."""
r, info = self.deal_post_data()
print((r, info, "by: ", self.client_address))
f = BytesIO()
f.write(b'<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">')
f.write(b"<html>\n<title>Upload Result Page</title>\n")
f.write(b"<body>\n<h2>Upload Result Page</h2>\n")
f.write(b"<hr>\n")
if r:
f.write(b"<strong>Success:</strong>")
else:
f.write(b"<strong>Failed:</strong>")
f.write(info.encode())
f.write(("<br><a href=\"%s\">back</a>" % self.headers['referer']).encode())
f.write(b"<hr><small>Powered By: bones7456, check new version at ")
f.write(b"<a href=\"https://gist.github.com/UniIsland/3346170\">")
f.write(b"here</a>.</small></body>\n</html>\n")
length = f.tell()
f.seek(0)
self.send_response(200)
self.send_header("Content-type", "text/html")
self.send_header("Content-Length", str(length))
self.end_headers()
if f:
self.copyfile(f, self.wfile)
f