import zipfile, csv, os, shutil
import oss2
def zip_ya(startdir, file_news):
# startdir = "./media" # 要压缩的文件夹路径
# file_news = "MMC_" + str(datetime.now()) + ".zip" # 压缩后文件夹的名字
z = zipfile.ZipFile(file_news, 'w', zipfile.ZIP_DEFLATED)# 参数一:文件夹名
for dirpath, dirnames, filenamesin os.walk(startdir):
fpath = dirpath.replace(startdir, '')# 这一句很重要,不replace的话,就从根目录开始复制
fpath = fpathand fpath + os.sepor '' # 这句话理解我也点郁闷,实现当前文件夹以及包含的所有文件的压缩
for filenamein filenames:
z.write(os.path.join(dirpath, filename), fpath + filename)
print u'压缩成功'
# import pandas as pd
@csrf_exempt
def to_excel(request):
if request.method =='POST':
json_data = json.loads(request.body)
else:
return HttpResponseBadRequest('Bad Request')
if "order_ids" in json_data:
id_list = json_data["order_ids"]
else:
return JsonResponse({"result":1, "message":"ids is required"})
for orderin id_list:
temps = IotTemp.objects.filter(order=order).order_by('time') \
.values("time", "temperature").distinct()
file_name = order.mac + order.number + datetime.now().strftime("%Y-%m-%d-%H-%M-%S") +".csv"
with open(os.path.join(sys.path[0], "iot", "media", file_name), 'wb')as csvfile:
writer = csv.writer(csvfile, dialect='excel')
writer.writerow(["ZenMeasureID:", order.mac, "Tracking No.:", order.number])
writer.writerow(["Date", "Time", "Temperature(C)"])
for iin temps:
writer.writerow(["%s", "%s", "%s"]) % (
i.time.strftime("%Y-%m-%d"), i.time.strftime("%H:%M:%S"), i.temperature)
startdir ="/media" # 要压缩的文件夹路径
file_news ="MMC_" + datetime.now().strftime("%Y-%m-%d-%H-%M-%S") +".zip"
zip_ya(startdir, file_news)
# user_sts_key() 连接 上传oss
AccessKeyID =""
AccessKeySecret =""
auth = oss2.Auth(AccessKeyID, AccessKeySecret)
bucket = oss2.Bucket(auth, 'http://oss-cn-beijing.aliyuncs.com', 'iot-server')
result = bucket.put_object('../media/file_news', 'iot-server/records/',
headers={'Content-Type':'application/json; charset=utf-8',
'Accept-Encoding':'gzip'})
if result.status =='200':
# 删除
shutil.rmtree("../media")
os.remove(file_news)
data = {
"url":"http://" +'iot-server/records/' +"oss-cn-beijing.aliyuncs.com/" +"%s" % (file_news)
}
return JsonResponse({"result":0, "message":"success", "data": data})
else:
return JsonResponse({"result":1, "message":"failed"})
https://help.aliyun.com/document_detail/32030.html
网友评论