2

私は Django を初めて使用しhtmlます。ファイルに次のコードがあります。

{% load staticfiles %}
<form method="post"> {% csrf_token %}
<input type="file" name="file">
<button>Submit</button>
</form>
{{file}}
<img class="hl" src="{{ MEDIA_URL }}photos/abc.png" /></a>
<img class="hl" src="{% static 'blog/images/sec.png' %}" /></a>

views.pyの上記のコードは次のとおりです。

if request.method == 'POST':
        if 'file' in request.POST:
            f = request.POST['file']
            a = MyUser(email="frt@wer.com", date_of_birth=date.today())
            a.photo.save('somename.png', File(open(f, 'r')))
            a.save()
            context = {'file': f}
            return render(request, 'home.html', context)

現在、ブラウザはユーザーのローカルデバイスからファイルの絶対パスを返さず、いくつかの理由でファイル名を収集するだけですが、security issuesコードa.photo.save('somename.png', File(open(f, 'r')))のこの部分にはユーザーローカルデバイスの絶対パスが必要です。 ./home/abc/Pictures/sec.pngsec.png

からpython manage.py shell:

>>>a = MyUser(email="frt@wer.com", date_of_birth=date.today())
>>>a.photo.save('somename.png', File(open('/home/abc/Pictures/sec.png', 'r')))
>>>a.save()

これはうまくいきます。回避策はありますか。使いたくありませんForm

4

1 に答える 1