Add instruction how to upload files

This commit is contained in:
Alex Root Junior 2019-11-20 00:10:52 +02:00
parent d7a35f50a9
commit fa6732542d
8 changed files with 74 additions and 1 deletions

67
docs/api/sending_files.md Normal file
View file

@ -0,0 +1,67 @@
# How to upload file?
As says [official Telegram Bot API documentation](https://core.telegram.org/bots/api#sending-files) there are three ways to send files (photos, stickers, audio, media, etc.):
If the file is already stored somewhere on the Telegram servers or file is available by the URL, you don't need to reupload it.
But if you need to upload new file just use subclasses of [InputFile](./types/input_file.md). Here is available two different types of input file:
- `#!python3 FSInputFile` - [uploading from file system](#upload-from-file-system)
- `#!python3 BufferedInputFile` - [uploading from buffer](#upload-from-buffer)
!!! warning "Be respectful with Telegram"
Instances of `InputFile` is reusable. That's mean you can create instance of InputFile and sent this file multiple times but Telegram is not recommend to do that and when you upload file once just save their `file_id` and use it in next times.
## Upload from file system
By first step you will need to import InputFile wrapper:
```python3
from aiogram.types import FSInputFile
```
Then you can use it:
```python3
cat = FSInputFile("cat.png")
agenda = FSInputFile("my-document.pdf", filename="agenda-2019-11-19.pdf")
```
### FSInputFile(...)
|Argument|Type|Description|
|---|---|---|
| path | `#!python3 Union[str, Path]` | File path |
| filename | `#!python3 Optional[str]` | Custom filename to be presented to Telegram |
| chunk_size | `#!python3 int` | File chunks size (Default: `64 kb`) |
## Upload from buffer
Files can be also passed from buffer (For example you generate image using [Pillow](https://pillow.readthedocs.io/en/stable/) and the want's to sent it to the Telegram):
Import wrapper:
```python3
from aiogram.types import BufferedInputFile
```
And then you can use it:
```python3
text_file = BufferedInputFile(b"Hello, world!", filename="file.txt")
```
### BufferedInputFile(...)
|Argument|Type|Description|
|---|---|---|
| buffer | `#!python3 bytes` | File path |
| filename | `#!python3 str` | Custom filename to be presented to Telegram (Required) |
| chunk_size | `#!python3 int` | File chunks size (Default: `64 kb`) |
Also you can read buffer from file:
```python3
file = BufferedInputFile.from_file("file.txt")
```
### BufferedInputFile.from_file(...)
|Argument|Type|Description|
|---|---|---|
| path | `#!python3 Union[str, Path]` | File path |
| filename | `#!python3 Optional[str]` | Custom filename to be presented to Telegram |
| chunk_size | `#!python3 int` | File chunks size (Default: `64 kb`) |

View file

@ -14,5 +14,5 @@ This object represents the contents of a file to be uploaded. Must be posted usi
- `from aiogram.api.types.input_file import InputFile`
## Related pages:
- [Official documentation](https://core.telegram.org/bots/api#inputfile)
- [How to upload file?](../sending_files.md)

View file

@ -30,3 +30,4 @@ Represents an animation file (GIF or H.264/MPEG-4 AVC video without sound) to be
- [Official documentation](https://core.telegram.org/bots/api#inputmediaanimation)
- [aiogram.types.InputFile](../types/input_file.md)
- [How to upload file?](../sending_files.md)

View file

@ -30,3 +30,4 @@ Represents an audio file to be treated as music to be sent.
- [Official documentation](https://core.telegram.org/bots/api#inputmediaaudio)
- [aiogram.types.InputFile](../types/input_file.md)
- [How to upload file?](../sending_files.md)

View file

@ -27,3 +27,4 @@ Represents a general file to be sent.
- [Official documentation](https://core.telegram.org/bots/api#inputmediadocument)
- [aiogram.types.InputFile](../types/input_file.md)
- [How to upload file?](../sending_files.md)

View file

@ -26,3 +26,4 @@ Represents a photo to be sent.
- [Official documentation](https://core.telegram.org/bots/api#inputmediaphoto)
- [aiogram.types.InputFile](../types/input_file.md)
- [How to upload file?](../sending_files.md)

View file

@ -31,3 +31,4 @@ Represents a video to be sent.
- [Official documentation](https://core.telegram.org/bots/api#inputmediavideo)
- [aiogram.types.InputFile](../types/input_file.md)
- [How to upload file?](../sending_files.md)