Esempio n. 1
0
def post_file(share_name, path_to_file):
    try:
        account_name, account_key = get_auth(request.authorization)
        file_service = FileService(account_name=account_name,
                                   account_key=account_key)
        start_timedelta, expiry_timedelta = get_sas_params(request.args)
        directory_name, file_name = get_location(path_to_file)
        if request.headers.get('Transfer-Encoding') == 'chunked':
            file_service.create_file_from_stream(share_name,
                                                 directory_name,
                                                 file_name,
                                                 request.stream,
                                                 count=4096)
        else:
            file_service.create_file_from_bytes(share_name, directory_name,
                                                file_name, request.get_data())
        sas_token = file_service.generate_file_shared_access_signature(
            share_name,
            directory_name=directory_name,
            file_name=file_name,
            permission=SharePermissions(read=True),
            expiry=datetime.now() + expiry_timedelta,
            start=start_timedelta,
            id=None,
            ip=None,
            protocol='https',
            cache_control=request.headers.get('Cache-Control'),
            content_disposition=request.headers.get(
                'Content-Disposition: attachment;'),
            content_encoding=request.headers.get('Content-Encoding'),
            content_language=request.headers.get('Content-Language'),
            content_type=request.headers.get('Content-Type'))
        url = file_service.make_file_url(share_name,
                                         directory_name,
                                         file_name,
                                         protocol='https',
                                         sas_token=sas_token)

        return Response(response=url + "",
                        status=200,
                        content_type='text/plain')
    except Exception as e:
        logger.exception(e)
        return abort(500, e)