Ανέβασμα Αρχείων στην Πλατφόρμα
Πολλές εργασίες απαιτούν να παρέχετε ένα αρχείο για χρήση από την πλατφόρμα Legalesign, όπως ένα αρχείο για να χρησιμοποιηθεί ως πρότυπο ή μια εικόνα για χρήση σε υπογραφή.
Η πλατφόρμα απαιτεί να τοποθετήσετε αυτό το αρχείο στον σωστό υποφάκελο του συστήματος clearing μας. Αυτό θα ελέγξει το αρχείο σας για πιθανά ζητήματα ασφαλείας και θα το προωθήσει στην κατάλληλη θέση για τον σκοπό του.
Εάν θέλετε να ανεβάσετε ένα έγγραφο προτύπου, χρησιμοποιήστε τον ειδικό οδηγό Μεταφόρτωση Αρχείου ως Πρότυπο. Αυτή η διαδικασία τώρα χρησιμοποιεί το uploadUrl που επιστρέφεται από το createTemplate.
Τι Θα Μάθετε
Αυτός ο οδηγός θα σας καθοδηγήσει στη μεταφόρτωση αρχείων στο Legalesign. Μην ανησυχείτε αν είστε νέοι στις APIs ή στην αποθήκευση στο cloud - θα εξηγήσουμε κάθε βήμα με σαφήνεια.
Τι είναι ένα Προ-Υπογεγραμμένο URL;
Ένα προ-υπογεγραμμένο URL είναι σαν προσωρινό πάσο πρόσβασης. Αντί να σας δώσουμε μόνιμη πρόσβαση στην αποθήκευσή μας, σας δίνουμε ένα ειδικό URL που:
- Λειτουργεί μόνο για μικρό χρονικό διάστημα (15 λεπτά)
- Επιτρέπει την μεταφόρτωση μόνο ενός συγκεκριμένου αρχείου
- Κρατά τα αρχεία σας ασφαλή
Σκεφτείτε το σαν ένα εισιτήριο στάθμευσης - παρέχει προσωρινή, περιορισμένη πρόσβαση για συγκεκριμένο σκοπό.
Τι είναι το S3;
Το S3 (Simple Storage Service) είναι η υπηρεσία αποθήκευσης αρχείων στο cloud της Amazon. Εκεί αποθηκεύουμε με ασφάλεια τα έγγραφά σας, τα λογότυπα και άλλα αρχεία. Δεν χρειάζεται να κατανοήσετε λεπτομερώς το S3 - απλά να ξέρετε ότι είναι ένας ασφαλής χώρος για αποθήκευση αρχείων στο cloud.
Επισκόπηση
Η διαδικασία μεταφόρτωσης ακολουθεί τα εξής βήματα:
- Ζητήστε ένα προ-υπογεγραμμένο URL μεταφόρτωσης από το GraphQL API (ζητήστε άδεια για μεταφόρτωση)
- Μεταφορτώστε το αρχείο σας στο S3 χρησιμοποιώντας το παρεχόμενο URL (πραγματική αποστολή αρχείου)
- Η πλατφόρμα επεξεργάζεται αυτόματα και επικυρώνει το αρχείο (ελέγχουμε ότι είναι ασφαλές)
- Το αρχείο μεταφέρεται στον τελικό προορισμό του (το βάζουμε στη σωστή θέση)
Γιατί αυτή η διαδικασία δύο βημάτων;
Ίσως αναρωτιέστε γιατί δεν επιτρέπουμε απευθείας μεταφόρτωση. Αυτή η διαδικασία δύο βημάτων:
- Εξασφαλίζει ότι έχετε άδεια για μεταφόρτωση
- Αποτρέπει μη εξουσιοδοτημένες μεταφορτώσεις αρχείων
- Μας επιτρέπει να σκανάρουμε αρχεία για ιούς
- Παρακολουθεί ποιος ανέβασε τι
Βήμα 1: Ζητήστε το URL μεταφόρτωσης
Χρησιμοποιήστε το ερώτημα upload για να λάβετε ένα προ-υπογεγραμμένο URL για τη μεταφόρτωση αρχείου σας (σε αυτή την περίπτωση ένα PDF). Δείτε τον οδηγό αυθεντικοποίησης για περισσότερες πληροφορίες σχετικά με το πώς να ξεκινήσετε την εκτέλεση ερωτημάτων GraphQL. Για λεπτομέρειες σε όλα τα επιχειρήματα, δείτε την αναφορά ερωτήματος upload.
query {
upload(
id: "<BASE64_OBJECT_ID>",
uploadType: TEMPLATE,
extension: "pdf"
) {
url
}
}
Επεξήγηση Παραμέτρων
- id: Αναγνωριστικό αντικειμένου κωδικοποιημένο σε Base64 (π.χ. αναγνωριστικό προτύπου, αναγνωριστικό εμπειρίας)
- uploadType: Ο τύπος του αρχείου που ανεβαίνει (βλέπε παρακάτω)
- extension: Επέκταση αρχείου (pdf, png, jpg)
Τύποι Μεταφόρτωσης
TEMPLATE- Αρχεία PDF για πρότυπα εγγράφωνLOGO- Εικόνες για τη σελίδα υπογραφής (branding)EMAILLOGO- Εικόνες για το branding στο emailATTACHMENT- Επιπλέον αρχεία για επισύναψη σε έγγραφα
Δείτε το UploadType enum για την πλήρη λίστα.
Βήμα 2: Μεταφόρτωση σε S3
Το ερώτημα επιστρέφει ένα προ-υπογεγραμμένο URL. Στείλτε το αρχείο σας σε αυτό το URL χρησιμοποιώντας ένα HTTP PUT αίτημα:
const response = await fetch(url, {
method: 'PUT',
body: fileData,
headers: {
'Content-Type': 'application/pdf' // or appropriate MIME type
}
});
Βήμα 3: Αυτόματη Επεξεργασία
Μόλις ανέβει το αρχείο, η πλατφόρμα:
- Σκανάρει το αρχείο για ιούς και απειλές ασφαλείας
- Επικυρώνει τη μορφή και το περιεχόμενο του αρχείου
- Επεξεργάζεται το αρχείο (π.χ., εξάγει διαστάσεις σελίδων για PDF)
- Το μεταφέρει στην τελική αποθηκευτική θέση με τα κατάλληλα δικαιώματα
Παρακολούθηση Επεξεργασίας σε Πραγματικό Χρόνο
Αν χρειάζεστε ανατροφοδότηση σε πραγματικό χρόνο μετά την ολοκλήρωση της μεταφόρτωσης στο S3, χρησιμοποιήστε τις συνδρομές GraphQL.
- Τα γεγονότα μεταφόρτωσης παραδίδονται στο
subscribeUserFeed - Χρησιμοποιούν την
category: "upload" - Τα τυπικά γεγονότα περιλαμβάνουν
uploadScanned,uploadTypeChecked,uploadCompleted, καιuploadFailed
Δείτε Παρακολούθηση Προόδου Μεταφόρτωσης με Συνδρομές.
Ολοκληρωμένο Παράδειγμα
- JavaScript
- Python
- C#
import { generateClient } from 'aws-amplify/api';
const uploadFile = async (objectId, file) => {
const client = generateClient();
const extension = file.name.split('.').pop();
// Step 1: Get upload URL
const result = await client.graphql({
query: `
query {
upload(
id: "${objectId}",
uploadType: TEMPLATE,
extension: "${extension}"
) {
url
}
}
`
});
const uploadUrl = result.data.upload.url;
// Step 2: Upload file
const response = await fetch(uploadUrl, {
method: 'PUT',
body: file,
headers: {
'Content-Type': file.type
}
});
if (!response.ok) {
throw new Error('Upload failed');
}
return { success: true };
};
import requests
from gql import gql, Client
from gql.transport.requests import RequestsHTTPTransport
def upload_file(graphql_endpoint, auth_token, object_id, file_path):
extension = file_path.split('.')[-1]
transport = RequestsHTTPTransport(
url=graphql_endpoint,
headers={'Authorization': auth_token}
)
client = Client(transport=transport, fetch_schema_from_transport=True)
query = gql(f'''
query {{
upload(
id: "{object_id}",
uploadType: TEMPLATE,
extension: "{extension}"
) {{
url
}}
}}
''')
result = client.execute(query)
upload_url = result['upload']['url']
with open(file_path, 'rb') as f:
file_data = f.read()
response = requests.put(
upload_url,
data=file_data,
headers={'Content-Type': 'application/pdf'}
)
if response.status_code != 200:
raise Exception('Upload failed')
return {'success': True}
using System;
using System.IO;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
using GraphQL;
using GraphQL.Client.Http;
using GraphQL.Client.Serializer.Newtonsoft;
public class FileUploader
{
public async Task<bool> UploadFile(string graphqlEndpoint, string authToken,
string objectId, string filePath)
{
var extension = Path.GetExtension(filePath).TrimStart('.');
var graphQLClient = new GraphQLHttpClient(
graphqlEndpoint,
new NewtonsoftJsonSerializer()
);
graphQLClient.HttpClient.DefaultRequestHeaders.Add("Authorization", authToken);
var query = new GraphQLRequest
{
Query = $@"
query {{
upload(
id: ""{objectId}"",
uploadType: TEMPLATE,
extension: ""{extension}""
) {{
url
}}
}}
"
};
var response = await graphQLClient.SendQueryAsync<dynamic>(query);
string uploadUrl = response.Data.upload.url;
using var httpClient = new HttpClient();
var fileBytes = await File.ReadAllBytesAsync(filePath);
var content = new ByteArrayContent(fileBytes);
content.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/pdf");
var uploadResponse = await httpClient.PutAsync(uploadUrl, content);
if (!uploadResponse.IsSuccessStatusCode)
{
throw new Exception("Upload failed");
}
return true;
}
}
Μορφή Διαδρομής
Τα αρχεία ακολουθούν αυτήν τη σύμβαση ονοματοδοσίας:
<uploadType>/<userId>/<base64ObjectId>.<extension>
Παράδειγμα:
template/usr123abc/dHBsYjQ5YTg5NWQtYWRhMy0xMWYwLWIxZGMtMDY5NzZlZmU0MzIx.pdf
Δεν χρειάζεται να δημιουργήσετε μόνοι σας αυτή τη διαδρομή - το API το χειρίζεται αυτόματα όταν παρέχετε τις σωστές παραμέτρους.
Υποστηριζόμενοι Τύποι Αρχείων
Πρότυπα
- Μόνο αρχεία PDF
- Μέγιστο μέγεθος: 50MB
Λογότυπα και Λογότυπα Email
- PNG, JPG, JPEG
- Μέγιστο μέγεθος: 5MB
- Συνιστώμενες διαστάσεις: 200x200px (λογότυπα), 600x200px (λογότυπα email)
Επισυνάψεις
- PDF, DOC, DOCX, XLS, XLSX, PNG, JPG
- Μέγιστο μέγεθος: 25MB
Χειρισμός Σφαλμάτων
- Χωρίς άδεια: Το αναγνωριστικό αντικειμένου δεν ανήκει στο λογαριασμό ή την ομάδα σας
- Άκυρη επέκταση: Ο τύπος αρχείου δεν υποστηρίζεται για αυτόν τον τύπο μεταφόρτωσης
- Το αρχείο είναι πολύ μεγάλο: Υπερβαίνει το μέγιστο επιτρεπτό μέγεθος
- Ανιχνεύτηκε ιός: Το αρχείο απέτυχε τον έλεγχο ασφαλείας
Σημειώσεις Ασφαλείας
- Τα προ-υπογεγραμμένα URLs λήγουν μετά από 15 λεπτά
- Τα αρχεία σαρώνονται για ιούς πριν την επεξεργασία
- Μόνο χρήστες με τα κατάλληλα δικαιώματα μπορούν να ανεβάσουν αρχεία
- Τα αρχεία απομονώνονται κατά την επεξεργασία στον κάδο clearing
Βέλτιστες Πρακτικές
- Ελέγχετε πάντα το μέγεθος αρχείου πριν την μεταφόρτωση
- Χρησιμοποιήστε τη σωστή μορφή αρχείου
- Διαχειριστείτε τα σφάλματα με ευγένεια
- Μην επαναχρησιμοποιείτε προ-υπογεγραμμένα URLs
- Κρατήστε τα στοιχεία σύνδεσής σας ασφαλή — μην μοιράζεστε ποτέ τα authentication tokens ή μην τα ενσωματώνετε σε κώδικα πελάτη