向下游服务发送大型XML文件可以通过多种方式实现,以下是一些基础概念和相关步骤:
import requests
def send_large_xml(file_path):
url = 'http://example.com/upload' # 下游服务的URL
headers = {'Content-Type': 'application/xml'}
with open(file_path, 'rb') as file:
response = requests.post(url, headers=headers, data=file)
if response.status_code == 200:
print("File sent successfully")
else:
print(f"Failed to send file: {response.status_code}")
# 使用示例
send_large_xml('path/to/large_file.xml')
from flask import Flask, request
app = Flask(__name__)
@app.route('/upload', methods=['POST'])
def upload_file():
if 'file' not in request.files:
return "No file part", 400
file = request.files['file']
if file.filename == '':
return "No selected file", 400
file.save(f"./uploads/{file.filename}")
return "File uploaded successfully", 200
if __name__ == '__main__':
app.run(host='0.0.0.0', port=5000)
requests
库的stream
参数)或分块读取文件。import requests
import hashlib
def send_large_xml(file_path):
url = 'http://example.com/upload'
headers = {'Content-Type': 'application/xml'}
md5_hash = hashlib.md5()
with open(file_path, 'rb') as file:
response = requests.post(url, headers=headers, data=file, timeout=300)
for chunk in iter(lambda: file.read(4096), b""):
md5_hash.update(chunk)
if response.status_code == 200:
print("File sent successfully")
print(f"MD5 checksum: {md5_hash.hexdigest()}")
else:
print(f"Failed to send file: {response.status_code}")
send_large_xml('path/to/large_file.xml')
from flask import Flask, request
import hashlib
app = Flask(__name__)
@app.route('/upload', methods=['POST'])
def upload_file():
if 'file' not in request.files:
return "No file part", 400
file = request.files['file']
if file.filename == '':
return "No selected file", 400
md5_hash = hashlib.md5()
with open(f"./uploads/{file.filename}", 'wb') as f:
for chunk in file.chunks():
f.write(chunk)
md5_hash.update(chunk)
received_md5 = md5_hash.hexdigest()
return f"File uploaded successfully. MD5 checksum: {received_md5}", 200
if __name__ == '__main__':
app.run(host='0.0.0.0', port=5000)
通过以上方法,可以有效地向下游服务发送大型XML文件,并确保传输的可靠性和完整性。
领取专属 10元无门槛券
手把手带您无忧上云