Media, Fotocamera e Caricamento Video
Campi video e acquisizione dal vivo tramite fotocamera nel browser, con change_type('video') e change_type('camera').
Caricamento di video
change_type($field, 'video', '', $extra) è un tipo di campo a sé stante, non un 'file' puntato sulle estensioni video - non si applica alcuna elaborazione immagine basata su GD (ridimensionamento/ritaglio/filigrana/miniature sono tutte funzionalità esclusive delle immagini), e non c'è una modalità di anteprima configurabile tra cui scegliere: un campo video mostra sempre un lettore <video controls> nativo. La cella dell'elenco mostra una piccola versione muta, solo fotogramma poster; cliccandoci sopra si apre il lettore completo, a piena grandezza, nella stessa finestra modale usata dall'anteprima del campo immagine.
$xcrud->change_type('simple_video', 'video', '', ['not_rename' => true]);
| Opzione | Tipo | Predefinito | Descrizione |
|---|---|---|---|
not_rename | bool | false | Mantiene il nome originale del file caricato (comunque sanificato contro il path traversal), stesso significato che ha su 'file'. |
I video caricati vengono convalidati rispetto a XcrudConfig::$uploadAllowedVideoExt (predefinito ['mp4', 'webm', 'ogg']) - lo stesso approccio di non-fidarsi-solo-dell'estensione che 'image' ottiene da getimagesize(), sebbene per il video non esista un controllo di firma leggero equivalente senza una dipendenza da ffmpeg, quindi qui il peso è retto invece dalla whitelist delle estensioni più il consueto confine del progetto per cui nulla di servito da qui può essere eseguito.
Acquisizione dalla fotocamera
change_type($field, 'camera', '', $extra) acquisisce una foto direttamente dalla fotocamera di un dispositivo tramite l'API getUserMedia() del browser - un'anteprima dal vivo più un pulsante Capture accanto alla consueta dropzone, senza bisogno di alcun selettore di file. Utile su mobile/tablet, dove scattare una foto direttamente è più veloce che navigare in un selettore di file.
$xcrud->change_type('camera_photo', 'camera', '', ['width' => 800, 'height' => 800]);
Tutto ciò che avviene dopo l'acquisizione - archiviazione, opzioni di ridimensionamento/ritaglio/filigrana, la miniatura nell'elenco, il click per l'anteprima - è identico a un normale campo 'image'; 'camera' condivide le stesse opzioni di elaborazione tipo-immagine (width/height/crop/manual_crop/ratio/watermark/watermark_position/thumbs) documentate nella pagina Caricamento di File e Immagini - solo il lato di acquisizione è diverso.
Su un browser o un contesto privo di qualunque accesso alla fotocamera (un browser datato, un permesso negato, un'origine non-HTTPS/non-localhost - l'accesso alla fotocamera richiede un contesto sicuro), il campo torna al normale selettore di file invece di risultare in un vicolo cieco.
Configurazione condivisa dei caricamenti
XcrudConfig::$uploadAllowedVideoExt (predefinito ['mp4', 'webm', 'ogg']) regola quali estensioni video sono accettate sia da 'video' sia, dove rilevante, da qualsiasi video acquisito tramite 'camera'. $uploadDir e $uploadMaxSize si applicano qui allo stesso modo dei campi file/immagine - vedi la Guida di riferimento a XcrudConfig.