2010-06-24 3 views

उत्तर

59
request.FILES['filename'].name 

:

def upload(request): 
    if request.method == 'POST': 
     form = UploadForm(request.POST, request.FILES) 
     if form.is_valid(): 
      upload = Upload() 
      upload.timestamp = datetime.datetime.now() 
      save_instance(form, upload) 

मैं इस का उपयोग कर की कोशिश की लेकिन यह काम नहीं किया।

आप कुंजी नहीं जानते हैं, तो आप फ़ाइलों पर पुनरावृति कर सकते हैं:

for filename, file in request.FILES.iteritems(): 
    name = request.FILES[filename].name 
+1

यह मुझे देता है: एक इंडेंट ब्लॉक की उम्मीद है। मैं :( – Pol

+0

ठीक भ्रमित मैं कैसे चर नाम की जाँच कर सकते, लेकिन मैं इसे प्रिंट मैं कैसे मुद्रित कर सकते हैं कि अंदर क्या है की जरूरत है – Pol

+2

यह वही मेरे लिए काम किया है:?। Request.FILES [ 'फ़ाइल'] नाम –

42
file = request.FILES['filename'] 
file.name   # Gives name 
file.content_type # Gives Content type text/html etc 
file.size   # Gives file's size in byte 
file.read()   # Reads file 
+1

मैं पथ कैसे मिल सकता है? –

3

जवाब, पुराना हो सकता है के बाद से वहाँ UploadedFile वर्ग पर एक name संपत्ति है। देखें: Uploaded Files and Upload Handlers (Django docs)

if form.is_valid(): 
    form.cleaned_data['my_file'].name 
3

नोट अगर आप अजगर 3.x उपयोग कर रहे हैं:

request.FILES वस्तु की तरह एक multivalue शब्दकोश है तो, अगर आप एक FileField सही ढंग के साथ अपने रूप बाँध, उपयोग के रूप में आसान के रूप में होना चाहिए जो अपलोड फ़ाइल बटन के माध्यम से अपलोड की गई फ़ाइलों को रखता है। आपके HTML कोड में बटन (प्रकार = "फाइल") के नाम पर कहते हैं कि "myFile" इसलिए "myFile" इस शब्दकोश में महत्वपूर्ण हो जाएगा। यदि आपने एक फ़ाइल अपलोड की है, तो इस कुंजी का मान केवल एक होगा और यदि आपने एकाधिक फाइलें अपलोड की हैं, तो आपके पास उस विशिष्ट कुंजी के लिए कई मान होंगे। यदि आप request.FILES['myfile'] का उपयोग करते हैं तो आपको पहला या अंतिम मान मिलेगा (मैं निश्चित रूप से नहीं कह सकता)। यदि आप केवल एक फ़ाइल अपलोड की गई यह ठीक है, लेकिन आप इस करना चाहिए कि आप सभी फ़ाइलें प्राप्त करना चाहते हैं:

list=[] #myfile is the key of a multi value dictionary, values are the uploaded files 
for f in request.FILES.getlist('myfile'): #myfile is the name of your html file button 
    filename = f.name 
    list.append(filename) 

पाठ्यक्रम में से एक एक लाइन में पूरी बात निचोड़ कर सकते हैं, लेकिन यह

समझने में आसान है
संबंधित मुद्दे