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)
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))
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))
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)