def download(request): """下载文件""" name = request.GET.get('name','') objs = name.split('^') container_name = objs[-1:][0] objs = objs[:-1] if len(objs)==1: #只有一个文件要下载的情况 result = utils.download_single_file(container_name, objs[0]) if result=='failure': return HttpResponse(result) wrapper = FileWrapper(open(result,'rb')) response = HttpResponse(wrapper,mimetype='application/octet-stream') response['Content-Length'] = os.path.getsize(result) response['Content-Disposition'] = 'attachment; filename=%s' % objs[0].encode('utf-8') return response else: #有多个文件要下载的情况 result = utils.download_multi_files(container_name, objs) if result == 'failure': return HttpResponse(result) wrapper = FileWrapper(open(result,'rb')) response = HttpResponse(wrapper,content_type='application/zip') response['Content-Disposition'] = 'attachment; filename=all_in_one.zip' return response
def download(request): """下载文件""" name = request.GET.get('name', '') objs = name.split('^') container_name = objs[-1:][0] objs = objs[:-1] if len(objs) == 1: #只有一个文件要下载的情况 result = utils.download_single_file(container_name, objs[0]) if result == 'failure': return HttpResponse(result) wrapper = FileWrapper(open(result, 'rb')) response = HttpResponse(wrapper, mimetype='application/octet-stream') response['Content-Length'] = os.path.getsize(result) response['Content-Disposition'] = 'attachment; filename=%s' % objs[ 0].encode('utf-8') return response else: #有多个文件要下载的情况 result = utils.download_multi_files(container_name, objs) if result == 'failure': return HttpResponse(result) wrapper = FileWrapper(open(result, 'rb')) response = HttpResponse(wrapper, content_type='application/zip') response['Content-Disposition'] = 'attachment; filename=all_in_one.zip' return response
def preview(request): """预览object""" items = request.GET.get('name','').split('^') container = items[-1:][0] objs = items[:-1] if len(objs)==1: result = utils.download_single_file(container,objs[0]) if result == 'failure': return HttpResponse(result) if objs[0].endswith('txt'): return HttpResponse(open(result).read(1000)) return HttpResponse(objs[0])
def preview(request): """预览object""" items = request.GET.get('name', '').split('^') container = items[-1:][0] objs = items[:-1] if len(objs) == 1: result = utils.download_single_file(container, objs[0]) if result == 'failure': return HttpResponse(result) if objs[0].endswith('txt'): return HttpResponse(open(result).read(1000)) return HttpResponse(objs[0])
def operation(request): """对swift的后台操作,ajax调用""" q = request.GET.get('q','') name = request.GET.get('name','') if q=='cc':#创建container try: client.put_container(utils.auth_url, utils.auth_token, name) except client.ClientException: return HttpResponse('failure') elif q=='dc': #删除container try: client.delete_container(utils.auth_url, utils.auth_token, name) except client.ClientException: return HttpResponse('failure') elif q=='lo': #列出container中的object try: object_list = utils.get_object_list(name) name_list = '^'.join([obj.get_name() for obj in object_list]) time_list = '^'.join([obj.get_last_modified() for obj in object_list]) size_list = '^'.join([str(obj.get_size()) for obj in object_list]) obj_list = '\n'.join([name_list,time_list,size_list]) return HttpResponse(obj_list) except client.ClientException: return HttpResponse('failure') elif q=='do': #删除object objs = name.split('^') container_name = objs[-1:][0] objs = objs[:-1] for obj in objs: try: client.delete_object(utils.auth_url,utils.auth_token, container_name, obj) except client.ClientException: return HttpResponse('failure') client.put_container(utils.auth_url,utils.auth_token, container_name) elif q=='dl': #下载object objs = name.split('^') container_name = objs[-1:][0] objs = objs[:-1] if len(objs)==1: response = utils.download_single_file(container_name, objs[0]) return response elif q=='ic':#查询container信息 try: result = client.get_container(utils.auth_url,utils.auth_token, name)[0].get('x-container-read','') if result: result = utils.auth_url+'/' return HttpResponse(result) except client.ClientException: return HttpResponse('failure') elif q=='sc':#共享container try: client.post_container(utils.auth_url,utils.auth_token, name,headers={'X-Container-Read':'.r:*'}) return HttpResponse(utils.auth_url+'/') except client.ClientException: return HttpResponse('failure') elif q=='pc':#使container变为私有 try: client.post_container(utils.auth_url,utils.auth_token, name,headers={'X-Container-Read':''}) return HttpResponse('success') except client.ClientException: return HttpResponse('failure') return HttpResponse('success')
def operation(request): """对swift的后台操作,ajax调用""" q = request.GET.get('q', '') name = request.GET.get('name', '') if q == 'cc': #创建container try: client.put_container(utils.auth_url, utils.auth_token, name) except client.ClientException: return HttpResponse('failure') elif q == 'dc': #删除container try: client.delete_container(utils.auth_url, utils.auth_token, name) except client.ClientException: return HttpResponse('failure') elif q == 'lo': #列出container中的object try: object_list = utils.get_object_list(name) name_list = '^'.join([obj.get_name() for obj in object_list]) time_list = '^'.join( [obj.get_last_modified() for obj in object_list]) size_list = '^'.join([str(obj.get_size()) for obj in object_list]) obj_list = '\n'.join([name_list, time_list, size_list]) return HttpResponse(obj_list) except client.ClientException: return HttpResponse('failure') elif q == 'do': #删除object objs = name.split('^') container_name = objs[-1:][0] objs = objs[:-1] for obj in objs: try: client.delete_object(utils.auth_url, utils.auth_token, container_name, obj) except client.ClientException: return HttpResponse('failure') client.put_container(utils.auth_url, utils.auth_token, container_name) elif q == 'dl': #下载object objs = name.split('^') container_name = objs[-1:][0] objs = objs[:-1] if len(objs) == 1: response = utils.download_single_file(container_name, objs[0]) return response elif q == 'ic': #查询container信息 try: result = client.get_container(utils.auth_url, utils.auth_token, name)[0].get('x-container-read', '') if result: result = utils.auth_url + '/' return HttpResponse(result) except client.ClientException: return HttpResponse('failure') elif q == 'sc': #共享container try: client.post_container(utils.auth_url, utils.auth_token, name, headers={'X-Container-Read': '.r:*'}) return HttpResponse(utils.auth_url + '/') except client.ClientException: return HttpResponse('failure') elif q == 'pc': #使container变为私有 try: client.post_container(utils.auth_url, utils.auth_token, name, headers={'X-Container-Read': ''}) return HttpResponse('success') except client.ClientException: return HttpResponse('failure') return HttpResponse('success')