2
파일 업로드가있는 장고 (Django) 양식이 있습니다. 보기에서 urllib 게시 요청을 사용하여이 파일을 다른 서버로 전달하고 싶습니다.django에서 파일을 원격 서버로 전달 fileupload
이 파일을 이와 같은 일반 게시물 변수에 넣으려고했습니다. 첫 번째 서버에
views.py는 다음 downsteam 서버는 또한 장고 TESTSERVER 경우
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()
이 작동하지만, nginx를/uwsgi와 나는 "불량 게이트웨이"오류로 실행합니다. uwsgi의 버퍼 크기가 작기 때문에 이것이라고 생각합니다. 해결책은 적절한 멀티 파트 게시 요청을하는 것입니다.
질문 : 장고 파일 업로드 요청에 따라 여러 부분 urllib 요청을 쉽게 작성하는 방법은 무엇입니까?
url = 'http://httpbin.org/post'
files = {'file': open('report.xls', 'rb')}
r = requests.post(url, files=files)
아직 한 것을 발견했으나, : – RickyA