uploader first commit

This commit is contained in:
Dita Aji Pratama 2026-04-16 15:28:50 +07:00
parent 68e0494f78
commit cd92b32d57
2 changed files with 111 additions and 0 deletions

100
scripts/uploader.md Normal file
View File

@ -0,0 +1,100 @@
# Uploader
File upload utility library for Bottle framework.
## Description
Simple file upload handler that saves files to a specified directory with optional renaming.
## Usage
### Import
```python
from scripts import uploader
```
### Function Signature
```python
uploader.upload(file, directory, new_name=None)
```
### Parameters
| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `file` | FileStorage | Yes | File object from `request.files.get('field_name')` |
| `directory` | string | Yes | Target directory path (will be created if not exists) |
| `new_name` | string | No | New filename. If empty/None, uses original filename |
### Returns
```python
{
"status": "success",
"path": "/full/path/to/saved/file.jpg"
}
```
On failure:
```python
{
"status": "failed",
"error": "Error message here"
}
```
## Examples
### Basic Upload (Keep Original Filename)
```python
from bottle import request
from scripts import uploader
@app.route('/upload', method='POST')
def do_upload():
file = request.files.get('file')
directory = '/var/www/uploads/'
result = uploader.upload(file, directory)
if result['status'] == 'success':
return f"File saved to: {result['path']}"
else:
return f"Upload failed: {result['error']}"
```
### Upload with Custom Filename
```python
@app.route('/upload', method='POST')
def do_upload():
file = request.files.get('file')
directory = '/var/www/uploads/'
new_name = "profile_picture.jpg"
result = uploader.upload(file, directory, new_name)
return result
```
### Using Generated Filename
```python
import uuid
@app.route('/upload', method='POST')
def do_upload():
file = request.files.get('file')
directory = '/var/www/uploads/'
ext = file.filename.split('.')[-1]
new_name = f"{uuid.uuid4()}.{ext}"
result = uploader.upload(file, directory, new_name)
return result
```

11
scripts/uploader.py Normal file
View File

@ -0,0 +1,11 @@
import os
def upload(file, directory, new_name=None):
try:
os.makedirs(directory, exist_ok=True)
if not new_name:
new_name = file.filename
full_path = os.path.join(directory, new_name)
file.save(full_path)
return {"status": "success", "path": full_path}
except Exception as e:
return {"status": "failed", "error": str(e)}