Пример #1
0
    def post(self, request, filename):
        content_length = request.META.get("CONTENT_LENGTH", 0)
        content_length = int(content_length)
        body = request.body
        if (content_length > MAX_FILESIZE) or (len(body) > MAX_FILESIZE):
            logger.error("File too large. content_length %d size %d" %
                         (content_length, len(body)))
            return Response({'detail': 'File size too large'}, status=400)

        app = request.META.get('app', None)
        if not app:
            # We should not have reached here anyway
            return Response({'detail': 'App id not provided'}, status=401)
        new_file = CloudFile(name=filename, app=app)

        # generate a friendly url and return to the user
        conn = S3Connection(AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY)
        while True:
            id = uuid.uuid4()
            new_filename = str(id) + '-' + \
                filename          # Try a new name if already exists
            key = '/'.join([REMOTE_FILES_DIR, new_filename])
            # check if such a file exists
            if not default_storage.exists(key):
                break
        cont_file = ContentFile(body)
        new_file.size = cont_file.size
        new_file.content.save(new_filename, cont_file)

        url = conn.generate_url(
            AWS_URL_EXPIRY, "GET", bucket=AWS_STORAGE_BUCKET_NAME, key=key)
        new_file.url = url
        new_file.save()

        return Response({"url": url}, status=201)
Пример #2
0
    def post(self, request, *args, **kwargs):
        # validate app name
        myfile = request.FILES.get("file", None)
        app = request.POST.get("app", "")
        appobj = self.is_validapp(app)
        error_msg = ""
        if not myfile:
            error_msg = "Please select a file to upload."
        elif not appobj:
            error_msg = "Please select an app before uploading file."
        elif myfile.size > MAX_FILESIZE:
            error_msg = "File too big. Max. file limit is 2 MB"

        if error_msg:
            c = {"form": FileUploadForm(), "error": error_msg}
            return render(request,
                          self.template_name,
                          c,
                          context_instance=RequestContext(request))

        filename = self.clean_filename(myfile.name)
        new_file = CloudFile(name=filename, app=appobj)

        conn = S3Connection(AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY)
        while True:
            id = uuid.uuid4()
            new_filename = str(id) + '-' + \
                filename          # Try a new name if already exists
            key = '/'.join([REMOTE_FILES_DIR, new_filename])
            # check if such a file exists
            if not default_storage.exists(key):
                break
        new_file.size = myfile.size
        new_file.content.save(new_filename, myfile)

        url = conn.generate_url(
            AWS_URL_EXPIRY, "GET", bucket=AWS_STORAGE_BUCKET_NAME, key=key)
        new_file.url = url
        new_file.save()
        c = {
            "form": FileUploadForm(), "success": "File uploaded successfully!"}
        return render(request,
                      self.template_name,
                      c,
                      context_instance=RequestContext(request))
Пример #3
0
    def post(self, request, *args, **kwargs):
        # validate app name
        myfile = request.FILES.get("file", None)
        app = request.POST.get("app", "")
        appobj = self.is_validapp(app)
        error_msg = ""
        if not myfile:
            error_msg = "Please select a file to upload."
        elif not appobj:
            error_msg = "Please select an app before uploading file."
        elif myfile.size > MAX_FILESIZE:
            error_msg = "File too big. Max. file limit is 2 MB"

        if error_msg:
            c = {"form": FileUploadForm(), "error": error_msg}
            return render(request,
                          self.template_name,
                          c,
                          context_instance=RequestContext(request))

        filename = self.clean_filename(myfile.name)
        new_file = CloudFile(name=filename, app=appobj)

        conn = S3Connection(AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY)
        while True:
            id = uuid.uuid4()
            new_filename = str(id) + '-' + \
                filename          # Try a new name if already exists
            key = '/'.join([REMOTE_FILES_DIR, new_filename])
            # check if such a file exists
            if not default_storage.exists(key):
                break
        new_file.size = myfile.size
        new_file.content.save(new_filename, myfile)

        url = conn.generate_url(AWS_URL_EXPIRY,
                                "GET",
                                bucket=AWS_STORAGE_BUCKET_NAME,
                                key=key)
        new_file.url = url
        new_file.save()
        c = {
            "form": FileUploadForm(),
            "success": "File uploaded successfully!"
        }
        return render(request,
                      self.template_name,
                      c,
                      context_instance=RequestContext(request))
Пример #4
0
    def post(self, request, filename):
        content_length = request.META.get("CONTENT_LENGTH", 0)
        content_length = int(content_length)
        body = request.body
        if (content_length > MAX_FILESIZE) or (len(body) > MAX_FILESIZE):
            logger.error("File too large. content_length %d size %d" %
                         (content_length, len(body)))
            return Response({'detail': 'File size too large'}, status=400)

        app = request.META.get('app', None)
        if not app:
            # We should not have reached here anyway
            return Response({'detail': 'App id not provided'}, status=401)
        new_file = CloudFile(name=filename, app=app)

        # generate a friendly url and return to the user
        conn = S3Connection(AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY)
        while True:
            id = uuid.uuid4()
            new_filename = str(id) + '-' + \
                filename          # Try a new name if already exists
            key = '/'.join([REMOTE_FILES_DIR, new_filename])
            # check if such a file exists
            if not default_storage.exists(key):
                break
        cont_file = ContentFile(body)
        new_file.size = cont_file.size
        new_file.content.save(new_filename, cont_file)

        url = conn.generate_url(AWS_URL_EXPIRY,
                                "GET",
                                bucket=AWS_STORAGE_BUCKET_NAME,
                                key=key)
        new_file.url = url
        new_file.save()

        return Response({"url": url}, status=201)