gpt4 book ai didi

python - 将文件从 django fileupload 传递到远程服务器

转载 作者:行者123 更新时间:2023-11-28 21:26:14 24 4
gpt4 key购买 nike

我有一个带有文件上传的 Django 表单。在 View 中,我想使用 urllib post 请求将此文件传递给另一台服务器。

我试着把这个文件放在一个像这样的普通 post 变量中。

第一台服务器上的views.py:

def loadfile(request):
server_url = "foo"

class UploadFileForm(forms.Form):
filename = forms.FileField()
context['fileform'] = UploadFileForm()

#after button is pressed
if request.method == 'POST':
upload_file(context, server_url, request.FILES['filename'])

return render_to_response("bar")

def upload_file(context, server_url, image_data):
#create a temp file to store image on sever
temp = tempfile.NamedTemporaryFile()
for chunk in image_data.chunks():
temp.write(chunk)
temp.flush()

#build filename
origfilename = str(image_data)
extention = origfilename[origfilename.rfind("."):]
filename = uuid.uuid4().hex + extention

#encode image so it can be send
with open(temp.name, "rb") as f:
data = f.read()
encoded_string = base64.urlsafe_b64encode(data)
url = "http://" + server_url + "/uploadimage?filename=" + filename
urllib2.urlopen(url, "img_data="+encoded_string)
temp.close()

如果下游服务器也是一个 django 测试服务器,这会起作用,但是使用 nginx/uwsgi 我会遇到“坏网关”错误。我认为这是因为 uwsgi 的缓冲区大小太小了。因此,解决方案是发出适当的多部分发布请求。

问题是:如何在给定 django 文件上传请求的情况下轻松创建多部分 urllib 请求?

最佳答案

使用 requests图书馆:

url = 'http://httpbin.org/post'
files = {'file': open('report.xls', 'rb')}
r = requests.post(url, files=files)

关于python - 将文件从 django fileupload 传递到远程服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13308012/

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