UploadFile#
עבור שיטת UploadFile, אנו ממליצים להשתמש במארח mediaUrl מהמסוף
השיטה נועדה להעלות קובץ לאחסון הענן, אותו ניתן לשלוח באמצעות sendFileByUrl שִׁיטָה. זה גם מאפשר לך להימנע משגיאות בקבלת קבצים מאחסון חיצוני ולהאיץ את שליחת הודעות, למשל, בסקריפט דיוור.
דרך חלופית לשלוח קובץ על ידי העלאה מהדיסק: sendFileByUpload.
מומלץ להשתמש בשיטה בעת שליחת הודעות מאותו סוג:
- בשיטת UploadFile העלו את הקובץ הנדרש לאחסון Green-API, קבלו קישור לקובץ בתגובה.
- השתמש ב- SendFileByUrl שיטה לשליחה באמצעות הקישור שהתקבל.
משך חיי הקישור הוא 15 ימים.
גודל הקובץ המרבי שניתן לשלוח הוא 100 MB.
סוג הקובץ שאתה שולח וכיצד אתה שולח אותו נקבע לפי סיומת הקובץ.
בַּקָשָׁה#
כדי להוריד קובץ, עליך להגיש בקשה לכתובת:
ראה את לפני שמתחילים קטע כדי להשיג את פרמטרי השאילתה 'mediaUrl', 'idInstance' ו-'apiTokenInstance'.
כותרות בקשה#
פָּרָמֶטֶר | הֶכְרֵחִי | תֵאוּר |
---|---|---|
Content-Type | כֵּן | סוג הקובץ בהתאם ל- רשימה של סוגי MIME . (אם סוג הקובץ אינו מופיע ברשימה, 'GA-Filename' מועבר במקום המחרוזת הזו) |
GA-Filename | לֹא | שם הקובץ עם הסיומת, אם הקובץ אינו ברשימת סוגי MIME. לדוגמה, קבצים כמו .go או .py . (אם סוג הקובץ תואם ל רְשִׁימָה, the string is not transmitted, only Content-Type is used) |
אם המערכת לא יכולה לקבוע את סוג הקובץ, הוא יישלח עם סוג ברירת המחדל (קובץ בינארי):
.bin
בקש פרמטרים#
פָּרָמֶטֶר | הֶכְרֵחִי | הֶכְרֵחִי | תֵאוּר |
---|---|---|---|
file | binary | כֵּן | העלה קובץ |
טקסט בקשה לדוגמה#
עליך לציין את הקובץ עצמו כגוף הבקשה.
תְגוּבָה#
שדות תגובה#
שָׂדֶה | סוּג | תֵאוּר |
---|---|---|
urlFile | string | קישור לקובץ שהועלה |
כיצד להשיג מידע על המועד האחרון להעלאת קבצים
כדי לקבל את המידע על המועד האחרון להעלאת הקובץ, עליך לאחזר מידע מכותרת הקישור
כדי לעשות זאת:
- קבל את הקישור לקובץ
-
בצע בקשת 'HEAD' עם הקישור שהתקבל
3.מהתוצאה, אחזר את הערך של השדה 'X-Amz-Expiration' 4. הערך שהתקבל מציין עד מתי הקישור יהיה זמין.
כדוגמה, השדה X-Amz-Expiration
, מכיל את הנתונים expiry-date="Fri, 31 May 2024 00:00:00 GMT"
. מה שמציין שהקישור זמין עד 31/05/2024 00:00:00 לפי אזור הזמן של GMT.
<center>
![head-result](../../assets/expiration-eng.png)
</center>
דוגמה תגובה#
{
"urlFile": "https://sw-media-out.storage.yandexcloud.net/1101123456/c1aabd48-c1c2-49b1-8f2d-f575a41777be.jpg"
}
שגיאות בהעלאת קובץ#
לרשימה של שגיאות נפוצות עבור כל השיטות, עיין ב- שגיאות נפוצות סָעִיף
קוד HTTP | מזהה שגיאה | תֵאוּר |
---|---|---|
400 | file should not be empty | המשתמש שלח קובץ ריק. הקובץ שהועלה לא יכול להיות ריק. |
413 | request entity too large | מתרחש בעת שליחת קבצים בעיבוד 1C (גרסה 8.3.22.1923). פתרון אפשרי: שינוי גרסת 1C. |
דוגמאות קוד#
דוגמה לקוד באמצעות שיטות uploadFile + sendFileByUrl#
<?php
// Need to use SDK https://github.com/green-api/whatsapp-api-client-php
require './vendor/autoload.php';
use GreenApi\RestApi\GreenApiClient;
define( "ID_INSTANCE", "1101123456" );
define( "API_TOKEN_INSTANCE", "d75b3a66374942c5b3c019c698abc2067e151558acbd412345" );
$greenApi = new GreenApiClient( ID_INSTANCE, API_TOKEN_INSTANCE, 'http://127.0.0.1:8080' );
$result = $greenApi->sending->uploadFile(
'C:\Games\PicFromDisk.png'
);
print_r( $result->data );
$result = $greenApi->sending->sendFileByUrl(
'11001234567@c.us',
$result->data->urlFile,
'googlelogo_color_272x92dp.png',
'Google logo'
);
print_r( $result->data );
דוגמאות קוד uploadFile#
import requests
url = "{{mediaUrl}}/waInstance{{idInstance}}/uploadFile/{{apiTokenInstance}}"
files = [
('file', ('window.jpg', open('C:/window.jpg','rb'),'image/jpeg'))
]
headers = {
'Content-Type': 'image/jpeg'
}
response = requests.post(url, files=files, headers=headers)
print(response.text.encode('utf8'))
curl --location '{{mediaUrl}}/{{idInstance}}/uploadFile/{{apiTokenInstance}}' \
--header 'Content-Type: image/jpeg' \
--data-binary "@/Users/user/Desktop/fileExample.jpeg"
var file = new File("/Users/user/Desktop/fileExample.jpeg");
var restTemplate = new RestTemplate();
var requestUrl = new StringBuilder();
requestUrl
.append({{mediaUrl}})
.append("/waInstance").append({{idInstance}})
.append("/uploadFile/")
.append({{apiTokenInstance}});
var byteArrayResource = new ByteArrayResource(Files.readAllBytes(file.toPath()));
var headers = new HttpHeaders();
headers.setContentType(MediaTypeFactory.getMediaType(file.getName())
.orElse(MediaType.APPLICATION_OCTET_STREAM));
var requestEntity = new HttpEntity<>(byteArrayResource, headers);
var response = restTemplate.exchange(requestUrl.toString(), HttpMethod.POST, requestEntity, String.class);
System.out.println(response);
var file = new File("/Users/user/Desktop/fileExample.jpeg");
var requestUrl = new StringBuilder();
requestUrl
.append({{mediaUrl}})
.append("/waInstance").append({{idInstance}})
.append("/uploadFile/")
.append({{apiTokenInstance}});
var response = Unirest.post(requestUrl.toString())
.header("Content-Type", Files.probeContentType(file.toPath()))
.body(Files.readAllBytes(file.toPath()))
.asString();
System.out.println(response);
<?php
// Need to use SDK https://github.com/green-api/whatsapp-api-client-php
require './vendor/autoload.php';
use GreenApi\RestApi\GreenApiClient;
define( "ID_INSTANCE", "1101123456" );
define( "API_TOKEN_INSTANCE", "d75b3a66374942c5b3c019c698abc2067e151558acbd412345" );
$greenApi = new GreenApiClient( ID_INSTANCE, API_TOKEN_INSTANCE );
$result = $greenApi->sending->uploadFile(
'C:\Games\PicFromDisk.png'
);
print_r( $result->data );