def upload_file(): """Upload a file to the database""" if not current_user.is_authenticated: flash("You need to log in or sign up before uploading file.") return redirect(url_for("login")) form = UploadFileForm() if form.validate_on_submit(): pic = form.file.data filename = generate_filename(File, pic.filename) mimetype = pic.mimetype file = File(filename=filename, file=pic.read(), mimetype=mimetype, file_owner=current_user) db.session.add(file) db.session.commit() return redirect(url_for("get_files")) return render_template("upload-img.html", form=form, logged_in=True, file=True)
def upload(): uff = UploadFileForm() filenames = [] if uff.validate_on_submit(): #filepath = 'C:\\Users\\lenovo\\Desktop\\学习任务\\URP项目\\农机作业路径地图可视化与修正工具Web开发\\农机作业路径地图可视化与修正工具Web开发\\' + uff.lands_file.data.filename # print(filepath) #获取文件名并保存csv文件到服务器临时文件夹C:\\Users\\lenovo\\Desktop\\学习任务\\URP项目\\csv_tmp\\csv_tmp filenames.append(uff.lands_file.data.filename) filenames.append(uff.routes_file.data.filename) filenames.append(uff.barriers_file.data.filename) filenames.append(uff.parameters_file.data.filename) print(filenames) print(type(filenames)) #获取当前存储的json文件数量 filenum = len(os.listdir(json_root + json_name[0])) print(filenum) flash(u'上传成功') for file_type in range(len(filenames)): csv_path = files_tmp + filenames[file_type] print(csv_path) if file_type == 0: uff.lands_file.data.save(csv_path) elif file_type == 1: uff.routes_file.data.save(csv_path) elif file_type == 2: uff.barriers_file.data.save(csv_path) elif file_type == 3: uff.parameters_file.data.save(csv_path) # 调用csv2json,生成标准数据到json文件 #json_path = json_root + json_name[file_type] + json_partname[file_type] + str(filenum) + '.json' json_path = json_root + json_name[file_type] + gen_name( file_type, filenum) print(json_path) flash(u'正在导入文件数据...') csv2json(json_path, csv_path, file_type) #保存数据到数据库 with open(csv_path, 'r') as cf: # 创建csv读取器 reader = csv.DictReader(cf, fieldname[file_type]) # 读掉原来表头 try: next(reader) except StopIteration: sys.exit() for row in reader: # 只有农机参数中不涉及经纬度方向问题 if file_type != 3: if row['latitude'][-1] == 'N': row['latitude'] = row['latitude'][0:-1] elif row['latitude'][-1] == 'S': row['latitude'] = '-' + row['latitude'][0:-1] if row['longtitude'][-1] == 'E': row['longtitude'] = row['longtitude'][0:-1] elif row['longtitude'][-1] == 'W': row['longtitude'] = '-' + row['longtitude'][0:-1] # 保存到数据库 if file_type == 0: data = md.Land(latitude=row['latitude'], longtitude=row['longtitude'], altitude=row['altitude']) elif file_type == 1: data = md.Route(latitude=row['latitude'], longtitude=row['longtitude'], engine_speed=row['engine_speed'], operate_mode=row['operate_mode']) elif file_type == 2: data = md.Barrier(name=row['name'], latitude=row['latitude'], longtitude=row['longtitude'], altitude=row['altitude']) elif file_type == 3: data = md.Parameter(operating_width=row['operating_width'], turning_radius=row['turning_radius'], total_length=row['total_length'], total_width=row['total_width']) db.session.add(data) db.session.commit() #节约服务器空间,删除已经生成过json文件的相应csv文件 for file in os.listdir(files_tmp): os.remove(files_tmp + file) return render_template('upload.html', form=uff)