sparkling-media

Media helper APIs for choosing, uploading, downloading, and saving media files from Lynx/JS.

Install

npm install sparkling-media

Exports

chooseMedia(params, callback)

Select images or videos from album or camera.

  • Request:
ParamTypeRequiredDefaultDescription
mediaTypes('image' | 'video')[]Yes-Types of media to select
sourceType'album' | 'camera'Yes-Source: photo album or camera
maxCountnumberNo1Maximum number of files to select
cameraType'front' | 'back'No-Camera type when sourceType is 'camera' (required for camera)
compressImagebooleanNofalseWhether to compress images
saveToPhotoAlbumbooleanNofalseSave captured media to photo album
needBase64DatabooleanNofalseReturn base64 encoded data
compressOption0 | 1 | 2 | 3 | 4No00-default, 1-both, 2-onlyBase64, 3-onlyImage, 4-none
compressWidthnumberNo0Target compress width
compressHeightnumberNo0Target compress height
compressQualitynumberNo100Compress quality (0-100)
  • Response: { code: number; msg: string; data?: { tempFiles: TempFile[] } }

TempFile:

FieldTypeDescription
tempFilePathstringTemporary file path (relative)
tempFileAbsolutePathstringAbsolute file path
sizenumberFile size in bytes
mediaType'image' | 'video'Media type
mimeTypestringMIME type of the file
base64DatastringBase64 data (if needBase64Data is true)

Example:

import { chooseMedia } from 'sparkling-media';

chooseMedia(
  {
    mediaTypes: ['image'],
    sourceType: 'album',
    maxCount: 3,
  },
  (res) => {
    if (res.code === 0) {
      console.log(res.data?.tempFiles);
    }
  }
);

uploadFile(params, callback)

Upload a file to a remote server.

  • Request:
ParamTypeRequiredDescription
urlstringYesUpload endpoint URL
filePathstringNoLocal file path to upload
paramsobjectNoAdditional parameters to send
headerobjectNoHTTP headers
  • Response: { code: number; msg: string; data?: { url?: string; uri?: string; response?: object; clientCode?: number } }

Example:

import { uploadFile } from 'sparkling-media';

uploadFile(
  {
    url: 'https://example.com/upload',
    filePath: '/tmp/photo.jpg',
    header: { Authorization: 'Bearer token' },
  },
  (res) => {
    console.log(res.code, res.data?.response);
  }
);

uploadImage(params, callback)

Upload an image to a remote server.

  • Request:
ParamTypeRequiredDescription
urlstringYesUpload endpoint URL
filePathstringNoLocal image file path to upload
paramsobjectNoAdditional parameters to send
headerobjectNoHTTP headers
  • Response: { code: number; msg: string; data?: { url?: string; uri?: string; response?: object; clientCode?: number } }

Example:

import { uploadImage } from 'sparkling-media';

uploadImage(
  {
    url: 'https://example.com/upload',
    filePath: '/tmp/photo.jpg',
    header: { Authorization: 'Bearer token' },
  },
  (res) => {
    console.log(res.code, res.data?.url);
  }
);

downloadFile(params, callback)

Download a file from a URL.

  • Request:
ParamTypeRequiredDefaultDescription
urlstringYes-Download URL
extensionstringYes-File extension (e.g. 'png', 'jpg')
paramsobjectNo-Additional parameters
headerobjectNo-HTTP headers
saveToAlbum'image' | 'video'No-Save to photo album as image or video
needCommonParamsbooleanNotrueAdd common parameters to request
timeoutIntervalnumberNo-Request timeout in seconds
  • Response: { code: number; msg: string; data?: { httpCode: number; clientCode: number; header: object; filePath: string } }

Example:

import { downloadFile } from 'sparkling-media';

downloadFile(
  {
    url: 'https://example.com/image.png',
    extension: 'png',
    saveToAlbum: 'image',
  },
  (res) => {
    if (res.code === 0) {
      console.log('Saved to:', res.data?.filePath);
    }
  }
);

saveDataURL(params, callback)

Save a base64 data URL to the device.

  • Request:
ParamTypeRequiredDescription
dataURLstringYesBase64 encoded data URL
filenamestringYesFile name without extension
extensionstringYesFile extension (e.g. 'png', 'jpg')
saveToAlbum'image' | 'video'NoSave to photo album as image or video
  • Response: { code: number; msg: string; data?: { filePath: string } }

Example:

import { saveDataURL } from 'sparkling-media';

saveDataURL(
  {
    dataURL: 'data:image/png;base64,iVBOR...',
    filename: 'screenshot',
    extension: 'png',
    saveToAlbum: 'image',
  },
  (res) => {
    if (res.code === 0) {
      console.log('Saved to:', res.data?.filePath);
    }
  }
);

Native method names

This package calls:

  • media.chooseMedia
  • media.uploadFile
  • media.uploadImage
  • media.downloadFile
  • media.saveDataURL

Your host app must register native implementations for these methods. See Sparkling Method SDK / iOS.