uppy.html 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <title>Uppy File Upload with Cloud Integrations, Camera, and Unsplash</title>
  7. <link href="https://releases.transloadit.com/uppy/v2.6.0/uppy.min.css" rel="stylesheet">
  8. </head>
  9. <body>
  10. <h2>Upload Files with Cloud Services, Audio, Camera, and Unsplash using Uppy</h2>
  11. <div id="drag-drop-area"></div>
  12. <span class="select-file-button">Open Uppy Popup</span>
  13. <script src="https://code.jquery.com/jquery-3.7.1.min.js" integrity="sha256-/JqT3SQfawRcv/BIHPThkBvs0OEvtFFmqPF/lYI/Cxo=" crossorigin="anonymous"></script>
  14. <script src="https://releases.transloadit.com/uppy/v2.6.0/uppy.min.js"></script>
  15. <script>
  16. const uppy = new Uppy.Core({
  17. restrictions: {
  18. maxNumberOfFiles: 1,
  19. allowedFileTypes: ['image/*', 'video/*']
  20. },
  21. autoProceed: false,
  22. allowMultipleUploadBatches: false
  23. })
  24. .use(Uppy.Dashboard, {
  25. inline: false,
  26. target: '#drag-drop-area',
  27. trigger: '.select-file-button',
  28. showProgressDetails: true,
  29. singleFileFullScreen: true,
  30. //note: 'Upload files from cloud, record video, edit images, and search Unsplash',
  31. doneButtonHandler: null,
  32. closeModalOnClickOutside: true,
  33. closeAfterFinish: true,
  34. showLinkToFileUploadResult: true,
  35. proudlyDisplayPoweredByUppy: false
  36. })
  37. /*.use(Uppy.Url, {
  38. target: Uppy.Dashboard,
  39. companionUrl: 'https://demo.morphme.io/uppy_demo'
  40. })
  41. .use(Uppy.Unsplash, {
  42. target: Uppy.Dashboard,
  43. companionUrl: 'https://demo.morphme.io/uppy_demo',
  44. clientId: 'YOUR_UNSPLASH_ACCESS_KEY' // Replace with Unsplash Access Key
  45. })
  46. .use(Uppy.GoogleDrive, {
  47. target: Uppy.Dashboard,
  48. companionUrl: 'https://demo.morphme.io/uppy_demo' // Companion server URL
  49. })
  50. .use(Uppy.OneDrive, {
  51. target: Uppy.Dashboard,
  52. companionUrl: 'https://demo.morphme.io/uppy_demo'
  53. })
  54. .use(Uppy.Dropbox, {
  55. target: Uppy.Dashboard,
  56. companionUrl: 'https://demo.morphme.io/uppy_demo'
  57. })*/
  58. .use(Uppy.Webcam, {
  59. target: Uppy.Dashboard,
  60. modes: ['picture', 'video-audio']
  61. })
  62. /*.use(Uppy.Audio, {
  63. target: Uppy.Dashboard
  64. })*/
  65. .use(Uppy.ImageEditor, {
  66. target: Uppy.Dashboard,
  67. quality: 0.8,
  68. cropperOptions: {
  69. viewMode: 1,
  70. background: true
  71. }
  72. })
  73. .use(Uppy.XHRUpload, {
  74. endpoint: 'upload.php', // PHP endpoint
  75. fieldName: 'file',
  76. formData: true,
  77. bundle: true,
  78. getResponseData (response) {
  79. console.log(response);
  80. var json = jQuery.parseJSON(response);
  81. console.log('status: '+json.status);
  82. console.log('path: '+json.path);
  83. }
  84. });
  85. uppy.on('file-added', (file) => {
  86. console.log('Added file', file);
  87. uppy.setMeta({
  88. id: 110,
  89. entity: 'Entity123',
  90. name: file.meta.name,
  91. type: file.meta.type
  92. });
  93. });
  94. uppy.on('upload-success', (file, response) => {
  95. console.log(file.name);
  96. console.log(response)
  97. /*const img = new Image();
  98. img.width = 300;
  99. img.alt = file.id;
  100. img.src = response.uploadURL;
  101. document.body.appendChild(img);*/
  102. });
  103. uppy.on('complete', (result) => {
  104. console.log('Upload complete! Files:', result.successful);
  105. /*if (result.successful.length > 0) {
  106. const fileUrl = result.successful[0].uploadURL;
  107. console.log('File uploaded:', fileUrl);
  108. }*/
  109. });
  110. uppy.on('dashboard:modal-closed', () => {
  111. console.log('Dashboard modal closed');
  112. uppy.cancelAll();
  113. });
  114. </script>
  115. </body>
  116. </html>