Middleware to upload files for Bobtail
pip install bobtail-upload
from bobtail_upload import BobtailUpload
app = Bobtail(routes=routes)
app.use(BobtailUpload(options={}))
Bobtail Upload will attach the Upload API to the request object.
There are 2 new methods now available on Request
:
add(self, *, file_name: str, data: bytes, mimetype: str) -> None
save(self, *, table_name: str = None, pk: Union[int, str] = None) -> None
def post(self, req: Request, res: Response):
data = req.get_multipart_data()
req.upload.add(
file_name=data["logo"]["value"]["filename"],
data=data["logo"]["value"]["file_data"],
mimetype=data["logo"]["value"]["mimetype"],
)
req.upload.save()
To save files based on a table name & primary key.
The default upload directory path is /uploads
- uploads
- images
- 2
For example
def post(self, req: Request, res: Response):
data = req.get_multipart_data()
req.upload.add(
file_name=data["logo"]["value"]["filename"],
data=data["logo"]["value"]["file_data"],
mimetype=data["logo"]["value"]["mimetype"],
)
# Use your ORM to save the file to your db & obtain the returned primary key (pk)
req.upload.save(table_name="images", pk=pk)
- UPLOAD_DIR - the directory path where files will be saved (defaults to
uploads
).
options = {
"UPLOAD_DIR": "uploads",
}