Langsung ke konten

Panduan Memulai

GitHub

Anda bisa menggunakan AI-Assisted Setup kami untuk menginstal plugin ini. Tambahkan skill Capgo ke tool AI Anda dengan command berikut:

Jendela terminal
npx skills add https://github.com/Cap-go/capgo-skills --skill capacitor-plugins

Lalu gunakan prompt berikut:

Use the `capacitor-plugins` skill from `Cap-go/capgo-skills` to install the `@capgo/capacitor-uploader` plugin in my project.

Jika Anda lebih memilih Manual Setup, instal plugin dengan menjalankan perintah berikut dan ikuti petunjuk khusus platform di bawah ini:

Jendela terminal
bun add @capgo/capacitor-uploader
bunx cap sync
import { Uploader } from '@capgo/capacitor-uploader';

Mulai upload, subscribe ke events, dan lacak hasil upload id.

import { Uploader } from '@capgo/capacitor-uploader';
let uploadId = '';
const listener = await Uploader.addListener('events', async (event) => {
if (event.id !== uploadId) return;
if (event.name === 'uploading') {
console.log(event.payload.percent);
}
if (event.name === 'completed' || event.name === 'failed') {
if (event.eventId) {
await Uploader.acknowledgeEvent({ eventId: event.eventId });
}
await listener.remove();
}
});
const { id } = await Uploader.startUpload({
filePath: 'file:///data/user/0/.../scan.jpg',
serverUrl: 'https://api.example.com/v1/assets',
method: 'POST',
headers: { Authorization: 'Bearer token' },
maxRetries: 3,
});
uploadId = id;

PUT upload hanya mendukung satu file. Gunakan presigned URL sebagai serverUrl dan atur method: 'PUT'.

await Uploader.startUpload({
filePath: capturedUri,
serverUrl: presignedUrl,
method: 'PUT',
headers: { 'Content-Type': 'image/jpeg' },
});

Contoh: multipart form dengan field tambahan

Bagian berjudul “Contoh: multipart form dengan field tambahan”
await Uploader.uploadMultipart({
url: 'https://api.example.com/upload',
filePath: localPath,
fieldName: 'file',
fields: { userId: '42', kind: 'receipt' },
headers: { Authorization: 'Bearer token' },
});
  • Banyak file: gunakan files array pada startUpload untuk satu request multipart. PUT tidak bisa mengirim banyak body.
  • Latar belakang web: upload akan berhenti jika user menutup tab. Gunakan native platform jika proses harus tetap jalan saat app di-background.
  • Cancel: panggil removeUpload({ id }) dengan id dari startUpload.
  • Progress: selalu pasang events listener sebelum memulai, agar tidak melewatkan progress awal.

Mulai upload file ke server.

Upload akan terus berjalan di background meskipun aplikasi ditutup atau masuk ke background. Pantau event upload untuk melacak progress, penyelesaian, atau kegagalan.

import { Uploader } from '@capgo/capacitor-uploader';
const { id } = await Uploader.startUpload({
filePath: 'file:///path/to/file.jpg',
serverUrl: 'https://example.com/upload',
headers: {
'Authorization': 'Bearer token'
},
method: 'POST',
uploadType: 'multipart',
fileField: 'photo'
});
console.log('Upload started with ID:', id);

Batalkan dan hapus upload yang sedang berjalan.

Ini akan menghentikan upload jika sedang berjalan dan membersihkan resource.

import { Uploader } from '@capgo/capacitor-uploader';
await Uploader.removeUpload({ id: 'upload-123' });

Opsi konfigurasi untuk mengunggah file.

export interface uploadOption {
/**
* The local file path of the file to upload.
* Can be a file:// URL or an absolute path.
*
* @since 0.0.1
*/
filePath: string;
/**
* The server URL endpoint where the file should be uploaded.
*
* @since 0.0.1
*/
serverUrl: string;
/**
* The title of the upload notification shown to the user.
* Android only.
*
* @default 'Uploading'
* @since 0.0.1
*/
notificationTitle?: string;
/**
* HTTP headers to send with the upload request.
* Useful for authentication tokens, content types, etc.
*
* @since 0.0.1
* @example
* ```typescript
* headers: {
* 'Authorization': 'Bearer token123',
* 'X-Custom-Header': 'value'
* }
* ```
*/
headers: {
[key: string]: string;
};
/**
* The HTTP method to use for the upload request.
*
* @default 'POST'
* @since 0.0.1
*/
method?: 'PUT' | 'POST';
/**
* The MIME type of the file being uploaded.
* If not specified, the plugin will attempt to determine it automatically.
*
* @since 0.0.1
* @example 'image/jpeg', 'application/pdf', 'video/mp4'
*/
mimeType?: string;
/**
* Additional form parameters to send with the upload request.
* These will be included as form data in multipart uploads.
*
* @since 0.0.1
*/
parameters?: { [key: string]: string };
/**
* The maximum number of times to retry the upload if it fails.
*
* @since 0.0.1
* @default 0
*/
maxRetries?: number;
/**
* The type of upload to perform.
* - 'binary': Uploads the file as raw binary data in the request body
* - 'multipart': Uploads the file as multipart/form-data
*
* @default 'binary'
* @since 0.0.2
*/
uploadType?: 'binary' | 'multipart';
/**
* The form field name for the file when using multipart upload type.
* Only used when uploadType is 'multipart'.
*
* @default 'file'
* @since 0.0.2
*/
fileField?: string;
}

Event yang dipicu selama siklus hidup upload.

export interface UploadEvent {
/**
* The current status of the upload.
* - 'uploading': Upload is in progress
* - 'completed': Upload finished successfully
* - 'failed': Upload encountered an error
*
* @since 0.0.1
*/
name: 'uploading' | 'completed' | 'failed';
/**
* Additional data about the upload event.
*
* @since 0.0.1
*/
payload: {
/**
* Upload progress percentage from 0 to 100.
* Only present during 'uploading' events.
*
* @since 0.0.1
*/
percent?: number;
/**
* Error message if the upload failed.
* Only present during 'failed' events.
*
* @since 0.0.1
*/
error?: string;
/**
* HTTP status code returned by the server.
* Present during 'completed' and 'failed' events.
*
* @since 0.0.1
*/
statusCode?: number;
};
/**
* Unique identifier for this upload task.
*
* @since 0.0.1
*/
id: string;
}

Halaman ini dibuat dari plugin src/definitions.ts. Jalankan ulang sync saat API publik berubah di upstream.

Jika Anda menggunakan Panduan Memulai untuk merencanakan operasi dashboard dan API, hubungkan dengan Menggunakan @capgo/capacitor-uploader untuk kapabilitas native di Menggunakan @capgo/capacitor-uploader, Ringkasan API untuk detail implementasi di API Overview, Pendahuluan untuk detail implementasi di Introduction, Kunci API untuk detail implementasi di API Keys, dan Perangkat untuk detail implementasi di Devices.