(五)django上傳文件並讀取相應數據存入數據庫


file_name = str(File).split('.')[0]
now = time.localtime(time.time())
insert_time = time.strftime("%Y%m%d%H%M%S", now)
qs = Users.objects.filter(id=uid).first()

# 上傳文件
File.name = file_name + str(uid) + insert_time
f = open(os.path.join('static/media/sc_upload', File.name), 'wb+')
for chunk in File.chunks():  # 保證大文件不會使用大量內存
    f.write(chunk)
f.close()

wb = xlrd.open_workbook('static/media/sc_upload/' + File.name)

# 第一個sheet
ws = wb.sheets()[0]
rows = 2
cols = 4
hang = []
for row in range(1, rows):
    for col in range(0, cols):
        zhi = ws.cell(1, col).value
        hang.append(zhi)
# 存儲文件信息
now = insert_time[0:4] + '-' + insert_time[4:6] + '-' \
      + insert_time[6:8] + ' ' + insert_time[8:10] + ':' \
      + insert_time[10:12] + ':' + insert_time[12:14]

file = FileMain()
file.filename = File.name
file.insert_people = qs
file.insert_time = datetime.datetime.strptime(str(now), '%Y-%m-%d %H:%M:%S')
file.locate = 'static/media/sc_upload'
file.save()

sc_data = ScMain()  # 實例化
id1 = 0
sc_data.bac_name = hang[0]
sc_data.pro_id = hang[1]
sc_data.pro_date = hang[2]
# 對於時間格式的特殊處理
sc_data.pro_date = datetime.date(*xlrd.xldate_as_tuple(sc_data.pro_date, wb.datemode)[:3]).strftime("%Y-%m-%d")
qs = Users.objects.filter(id=uid).first()
sc_data.user = qs
sc_data.insert_time = datetime.datetime.now()  # 獲取系統當前時間
qs = FileMain.objects.filter(id=file.id).first()
sc_data.f = qs
sc_data.save()
id1 = sc_data.id
# 對上傳的文件進行重命名
old_name = 'static/media/sc_upload/' + File.name
new_name = 'static/media/sc_upload/' + sc_data.bac_name + uid + insert_time
os.rename(old_name, new_name)
# 更改數據庫中的文件名
file1 = FileMain.objects.get(id=file.id)
file1.filename = sc_data.bac_name + uid + insert_time
file1.save()

上傳文件,並將文件重命名,這里做的是針對固定樣式的文件上傳,所以固定了rows和cols

django中對於日期格式有特定的處理,需要規范一下格式


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM