101 lines
1.9 KiB
Markdown
101 lines
1.9 KiB
Markdown
# 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
|
|
```
|