gpt4 book ai didi

python - 使用 Python 发送文件和文件名

转载 作者:行者123 更新时间:2023-12-03 11:49:49 24 4
gpt4 key购买 nike

我想制作一个简单的服务器,它接受来自客户端的不同类型的文件。问题是,我无法获得从客户端发送过来的文件名,所以所有文件都保存为 1 个文件名,无论文件叫什么。

这是我的client.py:

import socket
with socket.socket() as s:
s.connect(('192.168.1.2',10000))
with open('Image.jpg','rb') as f:
s.sendall(f.read())

这是我的 server.py:
import socket
print("Server started")
while True:
with socket.socket() as s:
s.bind(('192.168.1.2',10000))
s.listen(1)
with s.accept()[0] as c:
chunks = []
while True:
chunk = c.recv(4096)
if not chunk: break
chunks.append(chunk)
print("Receiving file")
with open('Image.jpg','wb') as f:
f.write(b''.join(chunks))
print("File Received")

哪个工作正常。问题开始了,如果我发送另一个文件,例如“data.csv”,它仍然会在服务器上保存为“Image.jpg”。

有没有办法将文件名与文件一起保存?

最佳答案

我通常做的是在数据之前发送文件名:

import socket
print("Server started")
while True:
with socket.socket() as s:
s.bind(('192.168.1.2',10000))
s.listen(1)
with s.accept()[0] as c:
chunks = []
while True:
filename = c.recv(1600)
filename = filename.decode()
chunk = c.recv(4096)
if not chunk: break
chunks.append(chunk)
print("Receiving file")
with open(filename,'wb') as f:
f.write(b''.join(chunks))
print("File Received")
客户:
import socket
import time
with socket.socket() as s:
s.connect(('192.168.1.2',10000))
with open('Image.jpg','rb') as f:
s.sendall('Image.jpg'.encode())
time.sleep(3)
s.sendall(f.read())

关于python - 使用 Python 发送文件和文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55054771/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com