Example #1
0
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
Example #2
0
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
Example #3
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])
Example #4
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])
Example #5
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')
Example #6
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')