1

コードがあります。コードは正常に実行されています。このコードの問題は、ファイルのアップロード時にファイル名が取得されなかったことです。

ビュー.py

@csrf_exempt
def upload_file(request):
    if request.method == 'POST':

        form = UploadFileForm(request.POST, request.FILES)
        if form.is_valid():
            handle_uploaded_file(request.FILES['file'])
        if 'filename' in request.FILES:
            filename = request.FILES['filename']
        else:
           return HttpResponseRedirect('/user_profileform/')
    else:
        form = UploadFileForm()
        return render_to_response('user_profile.html', {'form': form })

def handle_uploaded_file(f):

    destination = open('media/name', 'wb+')
    for chunk in f.chunks(): 
        destination.write(chunk)
    destination.close()

私のフォームは:-

<form action="/user_profileform/" method="POST" enctype="multipart/form-data" name="uform" id="userform">{% csrf_token %}
{{form}}

<input type="submit" value="submit" name="usubmit">
</form>

これを使用すると、ファイルは適切にアップロードされますが、ファイル名が取得されませんでした。

4

1 に答える 1

2

request.FILES問題は、辞書からファイル名を読み取ろうとしている可能性があります。このディクショナリには、UploadedFileフォームの各ファイル アップロード フィールドのオブジェクトが含まれています。ファイル名はそのUploadedFileオブジェクトのプロパティです。これを試して:

if request.FILES['file'].name:
    filename = request.FILES['file'].name

それでもうまくいかない場合は、実際のフォームと、ファイル名を使用しようとしているコードを示してください。

于 2013-08-19T08:38:57.983 に答える