{"id":1351,"date":"2021-03-28T16:22:17","date_gmt":"2021-03-28T19:22:17","guid":{"rendered":"https:\/\/www.latirus.com\/blog\/?p=1351"},"modified":"2024-12-08T19:07:47","modified_gmt":"2024-12-08T22:07:47","slug":"agrega-imagenes-drag-drop-en-laravel-y-vue-con-filepond","status":"publish","type":"post","link":"https:\/\/www.latirus.com\/blog\/2021\/03\/28\/agrega-imagenes-drag-drop-en-laravel-y-vue-con-filepond\/","title":{"rendered":"Agrega Im\u00e1genes Drag &#038; Drop en Laravel y Vue con Filepond"},"content":{"rendered":"\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img data-recalc-dims=\"1\" decoding=\"async\" src=\"https:\/\/i0.wp.com\/github.com\/pqina\/filepond-github-assets\/raw\/master\/filepond-animation-01.gif?ssl=1\" alt=\"\"\/><\/figure><\/div>\n\n\n\n<p>Uno de los <strong>drag &amp; drop<\/strong> de im\u00e1genes mas populares que existen en Javascript es <strong>Filepond<\/strong>. No solamente te permite la carga de im\u00e1genes, sino tambi\u00e9n todo tipo de archivo que quieras que el usuario cargue en tu pagina. En esta gu\u00eda veremos como instalar Filepond en un proyecto de Laravel junto con Vue 2.0. Para comenzar a utilizar <strong><a href=\"https:\/\/pqina.nl\/filepond\/\">Filepond <\/a><\/strong>en <strong>Vue <\/strong>y <strong>Laravel <\/strong>vamos a instalar la extensi\u00f3n <strong>vue-filepond<\/strong> para que nos sirva como adaptador entre <strong>Filepond <\/strong>y <strong>Vue<\/strong>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Descargar vue-filepond para Vue 2.0<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\"><code>npm install vue-filepond@^6.0.0<\/code><\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Instalar Extensi\u00f3n de Imagen Previa en Filepond<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\"><code>npm i filepond-plugin-image-preview --save<\/code><\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Agregar Extensi\u00f3n de Verificaci\u00f3n de Archivos en Filepond<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">npm i&nbsp;filepond-plugin-file-validate-type<\/code><\/pre>\n\n\n\n<p>Ahora que ya tenemos instaladas todas las extensiones, vamos a configurar el archivo JS de nuestro proyecto para iniciar <strong>Filepond en Vue<\/strong>. En el caso de <strong>Laravel<\/strong>, se encuentra en <em>resources\/js\/app.js<\/em>. Cabe mencionar que ya tenemos instanciada una app de <strong>Vue <\/strong>2.0:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"javascript\" class=\"language-javascript\">import&nbsp;Vue&nbsp;from&nbsp;'vue';\nimport&nbsp;vueFilePond&nbsp;from&nbsp;\"vue-filepond\";\nimport&nbsp;FilePondPluginFileValidateType&nbsp;from&nbsp;\"filepond-plugin-file-validate-type\";\nimport&nbsp;FilePondPluginImagePreview&nbsp;from&nbsp;\"filepond-plugin-image-preview\";\n\nconst&nbsp;FilePond&nbsp;=&nbsp;vueFilePond(\n&nbsp;&nbsp;&nbsp;&nbsp;FilePondPluginFileValidateType,\n&nbsp;&nbsp;&nbsp;&nbsp;FilePondPluginImagePreview\n&nbsp;&nbsp;);\n\nconst app&nbsp;=&nbsp;new&nbsp;Vue({\n&nbsp;&nbsp;&nbsp;&nbsp;el:&nbsp;'#app',\n&nbsp;&nbsp;&nbsp;&nbsp;components:&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FilePond\n&nbsp;&nbsp;&nbsp;&nbsp;},\n&nbsp;&nbsp;&nbsp;&nbsp;data:&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;...\n&nbsp;&nbsp;&nbsp;&nbsp;},\n});<\/code><\/pre>\n\n\n\n<p>Justo debajo de importar <strong>Vue<\/strong>, agregamos <strong>vue-filepond<\/strong> junto con sus extensiones y dentro de la App, asignamos el componente de <strong>Filepond <\/strong>para poder utilizar en nuestros templates o en caso de <strong>Laravel <\/strong>dentro de <strong>Blade<\/strong>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Configurando los Estilos de FilePond<\/h2>\n\n\n\n<p>Para configurar los estilos de <strong>Filepond <\/strong>en <strong>Vue<\/strong>, tenemos dos opciones. La primera es importar los estilos dentro de nuestro archivo <strong>JS <\/strong>y la segunda es incorporando en el HTML los estilos desde el <strong>CDN<\/strong>.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"javascript\" class=\"language-javascript\">import \"filepond\/dist\/filepond.min.css\";  \nimport \"filepond-plugin-image-preview\/dist\/filepond-plugin-image-preview.min.css\";<\/code><\/pre>\n\n\n\n<p>En <strong>Laravel<\/strong>, tenemos un archivo de estilos en <em>resouces\/css\/app.css<\/em>. En el caso de que no pongamos los estilos dentro del JS, escribimos lo siguiente en app.css.<\/p>\n\n\n\n<pre title=\"app.js\" class=\"wp-block-code\"><code lang=\"css\" class=\"language-css\">@import&nbsp;\"filepond\/dist\/filepond.min.css\";\n@import&nbsp;\"filepond-plugin-image-preview\/dist\/filepond-plugin-image-preview.min.css\";<\/code><\/pre>\n\n\n\n<p>y por ultimo, si ninguna de las dos opciones anteriores te parecen adecuadas, podes agregar en tu archivo <strong>HTML<\/strong> los estilos desde el <strong>CDN<\/strong>.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"markup\" class=\"language-markup\">&lt;link&nbsp;href=\"https:\/\/unpkg.com\/filepond\/dist\/filepond.css\"&nbsp;rel=\"stylesheet\"&gt;\n&lt;link href=\"https:\/\/unpkg.com\/filepond-plugin-image-preview\/dist\/filepond-plugin-image-preview.css\" rel=\"stylesheet\"&gt;<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Configurando Paginas de Backend (Laravel)<\/h2>\n\n\n\n<p>Esta parte es f\u00e1cil de seguir, yo voy a usar <strong>PHP <\/strong>pero se van a entender los conceptos para que lo hagas en el lenguaje que est\u00e9s utilizando. Recordemos que puede ser NodeJS, Python, Java, etc&#8230; <strong>Filepond <\/strong>necesita una url para poder cargar las im\u00e1genes, esta carga se hace mediante de un formulario con el m\u00e9todo <strong>POST<\/strong>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Creando el Controlador para subir Im\u00e1genes <\/h2>\n\n\n\n<p>Vamos a crear un controlador que se va a encargar de subir las im\u00e1genes o archivos al <strong>Storage <\/strong>y eliminarlas en caso de que el usuario cancele la acci\u00f3n de subir la imagen con <strong>Filepond<\/strong>.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">php artisan make:controller UploadController<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"php\" class=\"language-php\">&lt;?php\n\nnamespace&nbsp;App\\Http\\Controllers;\n\nuse&nbsp;App\\Models\\TemporaryFile;\nuse&nbsp;Illuminate\\Http\\Request;\nuse&nbsp;Illuminate\\Support\\Facades\\Storage;\n\nclass&nbsp;UploadController&nbsp;extends&nbsp;Controller\n{\n&nbsp;&nbsp;&nbsp;&nbsp;\/\/\n&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;function&nbsp;__construct()\n&nbsp;&nbsp;&nbsp;&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;app('debugbar')-&gt;disable();\n&nbsp;&nbsp;&nbsp;&nbsp;}\n\n&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;function&nbsp;delete(Request&nbsp;$request)\n&nbsp;&nbsp;&nbsp;&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$path&nbsp;=&nbsp;$request-&gt;getContent();&nbsp;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$directory&nbsp;=&nbsp;'\/tmp\/'.dirname($path);\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Storage::deleteDirectory($directory);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\n&nbsp;&nbsp;&nbsp;&nbsp;}\n\n&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;function&nbsp;store(Request&nbsp;$request)\n&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if($request-&gt;hasFile('image')){\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$file&nbsp;=&nbsp;$request-&gt;file('image');\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$filename&nbsp;=&nbsp;$file-&gt;getClientOriginalName();\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$folder&nbsp;=&nbsp;uniqid()&nbsp;.&nbsp;'-'&nbsp;.&nbsp;now()-&gt;timestamp;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$file-&gt;storeAs('tmp\/'.$folder&nbsp;,&nbsp;$filename);\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$path&nbsp;=&nbsp;$folder.\"\/\".$filename;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;$path;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;'';\n&nbsp;&nbsp;&nbsp;&nbsp;}\n}<\/code><\/pre>\n\n\n\n<p>La funci\u00f3n de store que se encarga de guardar la imagen dentro del storage necesita devolver un string para que <strong>Filepond <\/strong>pueda seguir operando desde el formulario padre. <\/p>\n\n\n\n<p>Ahora que ya tenemos creado nuestro controlador, vamos a crear las rutas necesarias para que el formulario de <strong>Filepond <\/strong>funcione con <strong>Vue <\/strong>y <strong>Laravel<\/strong>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Creando Rutas para subir Im\u00e1genes<\/h2>\n\n\n\n<p>Necesitamos tener dos rutas una con el m\u00e9todo POST y otra con el m\u00e9todo DELETE. En mi caso voy a crear las dos rutas dentro de web con el middleware de <strong>Auth <\/strong>para que solamente los usuarios registrados puedan <strong>subir im\u00e1genes con filepond en Laravel<\/strong>.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"php\" class=\"language-php\">&lt;?php\n    Route::middleware(['auth'])-&gt;group(function&nbsp;()&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\n&nbsp;&nbsp;&nbsp;&nbsp;Route::delete('\/upload',&nbsp;[UploadController::class,&nbsp;\"delete\"]);\n&nbsp;&nbsp;&nbsp;&nbsp;Route::post('\/upload',&nbsp;[UploadController::class,&nbsp;\"store\"]);\n});<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Componente (Opcional)<\/h2>\n\n\n\n<p>Si solamente ten\u00e9s una secci\u00f3n de tu web que necesita tener un <strong>drag &amp; drop<\/strong> junto con <strong>Laravel<\/strong>, <strong>Vue <\/strong>y <strong>Filepond <\/strong>no es necesario que hagas este paso. Solamente copiando el c\u00f3digo que te voy a pasar a continuaci\u00f3n dentro de tu archivo HTML (DIV ID : APP) es suficiente.<\/p>\n\n\n\n<p>En este caso, para que sea mas f\u00e1cil de leer, vamos a crear un componente en Laravel que se encargue de renderizar el componente de <strong>Vue<\/strong>. Vuelvo a decir que este paso no es obligatorio y podes manejarlo como acostumbres a tratar componentes de <strong>Vue<\/strong>.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">php artisan make:component InputDragDrop<\/code><\/pre>\n\n\n\n<pre title=\"App\/Components\/InputDragDrop.php\" class=\"wp-block-code\"><code lang=\"php\" class=\"language-php line-numbers\">&lt;?php\n\nnamespace&nbsp;App\\View\\Components;\n\nuse&nbsp;Illuminate\\View\\Component;\n\nclass&nbsp;InputDragDrop&nbsp;extends&nbsp;Component\n{\n&nbsp;&nbsp;&nbsp;&nbsp;\/**\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Create&nbsp;a&nbsp;new&nbsp;component&nbsp;instance.\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@return&nbsp;void\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*\/\n\n&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;$name;\n&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;$url;\n\n&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;function&nbsp;__construct($name,&nbsp;$url)\n&nbsp;&nbsp;&nbsp;&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;name&nbsp;=&nbsp;$name;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;url&nbsp;=&nbsp;$url;\n&nbsp;&nbsp;&nbsp;&nbsp;}\n\n&nbsp;&nbsp;&nbsp;&nbsp;\/**\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Get&nbsp;the&nbsp;view&nbsp;\/&nbsp;contents&nbsp;that&nbsp;represent&nbsp;the&nbsp;component.\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@return&nbsp;\\Illuminate\\Contracts\\View\\View|string\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*\/\n&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;function&nbsp;render()\n&nbsp;&nbsp;&nbsp;&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;view('components.input-drag-drop');\n&nbsp;&nbsp;&nbsp;&nbsp;}\n}<\/code><\/pre>\n\n\n\n<p>Este nuevo componente toma acepta dos par\u00e1metros, uno para el nombre y otro para la URL donde se encuentra el POST. Ahora vamos a incorporar a la vista de este componente el componente de <strong>Vue<\/strong> con las traducciones al <strong>Espa\u00f1ol<\/strong> correspondientes. Lamentablemente no existe la manera de traducir <strong>Filepond <\/strong>desde la extensi\u00f3n de <strong>Vue <\/strong>con un archivo <em>JSON<\/em>, por lo que tendremos que modificar las <em>label <\/em>una por una. Por este motivo hago un componente aparte sino seria un quilombo tener que copiar y pegar todo este componente en donde quiera un <strong>drag &amp; drop de im\u00e1genes en Laravel<\/strong>.<\/p>\n\n\n\n<pre title=\"Resources\/views\/components\/input-drag-drop.blade.php\" class=\"wp-block-code\"><code lang=\"php\" class=\"language-php line-numbers\">&lt;file-pond&nbsp;class=\"mt-2\"\n&nbsp;&nbsp;&nbsp;&nbsp;label-idle=\"Arrastra&nbsp;y&nbsp;suelta&nbsp;tus&nbsp;archivos&nbsp;o&nbsp;&lt;span&nbsp;class&nbsp;=&nbsp;'filepond--label-action'&gt;&nbsp;Examinar&nbsp;&lt;span&gt;\"\n&nbsp;&nbsp;&nbsp;&nbsp;label-invalid-field=\"El&nbsp;campo&nbsp;contiene&nbsp;archivos&nbsp;inv\u00e1lidos\"&nbsp;label-file-waiting-for-size=\"Esperando&nbsp;tama\u00f1o\"\n&nbsp;&nbsp;&nbsp;&nbsp;label-file-size-not-available=\"Tama\u00f1o&nbsp;no&nbsp;disponible\"&nbsp;label-file-loading=\"Cargando\"\n&nbsp;&nbsp;&nbsp;&nbsp;label-file-load-error=\"Error&nbsp;durante&nbsp;la&nbsp;carga\"&nbsp;label-file-processing=\"Cargando\"\n&nbsp;&nbsp;&nbsp;&nbsp;label-file-processing-complete=\"Carga&nbsp;completa\"&nbsp;label-file-processing-aborted=\"Carga&nbsp;cancelada\"\n&nbsp;&nbsp;&nbsp;&nbsp;label-file-processing-error=\"Error&nbsp;durante&nbsp;la&nbsp;carga\"&nbsp;label-file-processing-revert-error=\"Error&nbsp;durante&nbsp;la&nbsp;reversi\u00f3n\"\n&nbsp;&nbsp;&nbsp;&nbsp;label-file-remove-error=\"Error&nbsp;durante&nbsp;la&nbsp;eliminaci\u00f3n\"&nbsp;label-tap-to-cancel=\"Toca&nbsp;para&nbsp;cancelar\"\n&nbsp;&nbsp;&nbsp;&nbsp;label-tap-to-retry=\"Tocar&nbsp;para&nbsp;volver&nbsp;a&nbsp;intentar\"&nbsp;label-tap-to-undo=\"Tocar&nbsp;para&nbsp;deshacer\"\n&nbsp;&nbsp;&nbsp;&nbsp;label-button-remove-item=\"Eliminar\"&nbsp;label-button-abort-item-load=\"Abortar\"&nbsp;label-button-retry-item-load=\"Reintentar\"\n&nbsp;&nbsp;&nbsp;&nbsp;label-button-abort-item-processing=\"Cancelar\"&nbsp;label-button-undo-item-processing=\"Deshacer\"\n&nbsp;&nbsp;&nbsp;&nbsp;label-button-retry-item-processing=\"Reintentar\"&nbsp;label-button-process-item=\"Cargar\"\n&nbsp;&nbsp;&nbsp;&nbsp;label-max-file-size-exceeded=\"El&nbsp;archivo&nbsp;es&nbsp;demasiado&nbsp;grande\"\n&nbsp;&nbsp;&nbsp;&nbsp;label-max-file-size=\"El&nbsp;tama\u00f1o&nbsp;m\u00e1ximo&nbsp;del&nbsp;archivo&nbsp;es&nbsp;{filesize}\"\n&nbsp;&nbsp;&nbsp;&nbsp;label-max-total-file-size-exceeded=\"Tama\u00f1o&nbsp;total&nbsp;m\u00e1ximo&nbsp;excedido\"\n&nbsp;&nbsp;&nbsp;&nbsp;label-max-total-file-size=\"El&nbsp;tama\u00f1o&nbsp;total&nbsp;m\u00e1ximo&nbsp;del&nbsp;archivo&nbsp;es&nbsp;{filesize}\"\n&nbsp;&nbsp;&nbsp;&nbsp;label-file-type-not-allowed=\"Archivo&nbsp;de&nbsp;tipo&nbsp;no&nbsp;v\u00e1lido\"\n&nbsp;&nbsp;&nbsp;&nbsp;file-validate-type-label-expected-types=\"Espera&nbsp;{allButLastType}&nbsp;o&nbsp;{lastType}\"\n&nbsp;&nbsp;&nbsp;&nbsp;image-validate-size-label-format-error=\"Tipo&nbsp;de&nbsp;imagen&nbsp;no&nbsp;compatible\"\n&nbsp;&nbsp;&nbsp;&nbsp;image-validate-size-label-image-size-too-small=\"La&nbsp;imagen&nbsp;es&nbsp;demasiado&nbsp;peque\u00f1a\"\n&nbsp;&nbsp;&nbsp;&nbsp;image-validate-size-label-image-size-too-big=\"La&nbsp;imagen&nbsp;es&nbsp;demasiado&nbsp;grande\"\n&nbsp;&nbsp;&nbsp;&nbsp;image-validate-size-label-expected-min-size=\"El&nbsp;tama\u00f1o&nbsp;m\u00ednimo&nbsp;es&nbsp;{minWidth}&nbsp;\u00d7&nbsp;{minHeight}\"\n&nbsp;&nbsp;&nbsp;&nbsp;image-validate-size-label-expected-max-size=\"El&nbsp;tama\u00f1o&nbsp;m\u00e1ximo&nbsp;es&nbsp;{maxWidth}&nbsp;\u00d7&nbsp;{maxHeight}\"\n&nbsp;&nbsp;&nbsp;&nbsp;image-validate-size-label-image-resolution-too-low=\"La&nbsp;resoluci\u00f3n&nbsp;es&nbsp;demasiado&nbsp;baja\"\n&nbsp;&nbsp;&nbsp;&nbsp;image-validate-size-label-image-resolution-too-high=\"La&nbsp;resoluci\u00f3n&nbsp;es&nbsp;demasiado&nbsp;alta\"\n&nbsp;&nbsp;&nbsp;&nbsp;image-validate-size-label-expected-min-resolution=\"La&nbsp;resoluci\u00f3n&nbsp;m\u00ednima&nbsp;es&nbsp;{minResolution}\"\n&nbsp;&nbsp;&nbsp;&nbsp;image-validate-size-label-expected-max-resolution=\"La&nbsp;resoluci\u00f3n&nbsp;m\u00e1xima&nbsp;es&nbsp;{maxResolution}\"\n&nbsp;&nbsp;&nbsp;&nbsp;name=\"{{$name}}\"\n&nbsp;&nbsp;&nbsp;&nbsp;accepted-file-types=\"image\/jpeg,&nbsp;image\/png\"&nbsp;v-bind:server=\"{\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;url:&nbsp;'{{$url}}',\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;timeout:&nbsp;7000,\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;process:&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;method:&nbsp;'POST',\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;headers:&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'X-CSRF-TOKEN':&nbsp;'{{&nbsp;csrf_token()&nbsp;}}'\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;revert:&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;method:&nbsp;'DELETE',\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;headers:&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'X-CSRF-TOKEN':&nbsp;'{{&nbsp;csrf_token()&nbsp;}}'\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}\"&nbsp;\/&gt;<\/code><\/pre>\n\n\n\n<p>Ahora ya tenemos el componente, junto con <strong>FilePond en Espa\u00f1ol<\/strong> funcionando con <strong>Vue <\/strong>y <strong>Laravel<\/strong>. Nos queda un ultimo paso, agregar este <strong>drag &amp; drop<\/strong> dentro de un formulario. Vamos a ir a nuestro archivo de <strong>Blade <\/strong>en donde tengamos un formulario <em>POST<\/em>. Ejemplo podr\u00eda ser la carga de un articulo nuevo o logo para empresa.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"php\" class=\"language-php\">&nbsp;&lt;form&nbsp;action=\"{{route('products.store')}}\"&nbsp;method=\"POST\"&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;@csrf\n&nbsp;&nbsp;&nbsp;&nbsp;@method('POST')\n\n&nbsp;&nbsp;&nbsp;&nbsp;&lt;x-input-drag-drop&nbsp;name=\"image\"&nbsp;url=\"\/upload\"&gt;&lt;\/x-input-drag-drop&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;\n    &lt;div&nbsp;class=\"px-4&nbsp;py-3&nbsp;bg-gray-50&nbsp;text-right&nbsp;sm:px-6\"&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;a&nbsp;href=\"{{route('admin.products')}}\"&nbsp;class=\"button-cancel&nbsp;mr-2\"&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Cancelar\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;\/a&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;button&nbsp;type=\"submit\"&nbsp;class=\"button-save\"&nbsp;name=\"submit\"&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Guardar\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;\/button&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&lt;\/div&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&lt;\/div&gt;\n&lt;\/form&gt;<\/code><\/pre>\n\n\n\n<p>En name ponemos image y en url \/upload que son las rutas que acabamos de crear. Al subir una imagen, nos va a crear la imagen que se suba dentro del <em>Storage <\/em>de <strong>Laravel <\/strong>y nos va a devolver el PATH o la ruta en donde se encuentra.<\/p>\n\n\n\n<p> Al Enviar el formulario, pasara como par\u00e1metro una <strong>string <\/strong>con la ruta en donde se encuentra para que podamos guardarla en la Base de Datos, renombrarla o hacer lo cualquier cosa con ella.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Uno de los drag &amp; drop de im\u00e1genes mas populares que existen en Javascript es Filepond. No solamente te permite la carga de im\u00e1genes, sino tambi\u00e9n todo tipo de archivo que quieras que el usuario cargue en tu pagina. En esta gu\u00eda veremos como instalar Filepond en un proyecto de Laravel junto con Vue 2.0. [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":1357,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[225,223,220],"tags":[314,309,310,311,312,226,62,313],"class_list":["post-1351","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-laravel","category-php","category-tutoriales","tag-blade","tag-drag","tag-drop","tag-filepond","tag-js","tag-laravel","tag-php","tag-vue"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v24.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Agrega Im\u00e1genes Drag &amp; Drop en Laravel y Vue con Filepond - Latirus<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.latirus.com\/blog\/2021\/03\/28\/agrega-imagenes-drag-drop-en-laravel-y-vue-con-filepond\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Agrega Im\u00e1genes Drag &amp; Drop en Laravel y Vue con Filepond - Latirus\" \/>\n<meta property=\"og:description\" content=\"Uno de los drag &amp; drop de im\u00e1genes mas populares que existen en Javascript es Filepond. No solamente te permite la carga de im\u00e1genes, sino tambi\u00e9n todo tipo de archivo que quieras que el usuario cargue en tu pagina. En esta gu\u00eda veremos como instalar Filepond en un proyecto de Laravel junto con Vue 2.0. [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.latirus.com\/blog\/2021\/03\/28\/agrega-imagenes-drag-drop-en-laravel-y-vue-con-filepond\/\" \/>\n<meta property=\"og:site_name\" content=\"Latirus\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/latirus\/\" \/>\n<meta property=\"article:published_time\" content=\"2021-03-28T19:22:17+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-12-08T22:07:47+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.latirus.com\/blog\/wp-content\/uploads\/2021\/03\/filepond-laravel-vue.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1284\" \/>\n\t<meta property=\"og:image:height\" content=\"842\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Federico Perez\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Federico Perez\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"NewsArticle\",\"@id\":\"https:\/\/www.latirus.com\/blog\/2021\/03\/28\/agrega-imagenes-drag-drop-en-laravel-y-vue-con-filepond\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.latirus.com\/blog\/2021\/03\/28\/agrega-imagenes-drag-drop-en-laravel-y-vue-con-filepond\/\"},\"author\":{\"name\":\"Federico Perez\",\"@id\":\"https:\/\/www.latirus.com\/blog\/#\/schema\/person\/aacf914583ee8f94bf64b989e164591c\"},\"headline\":\"Agrega Im\u00e1genes Drag &#038; Drop en Laravel y Vue con Filepond\",\"datePublished\":\"2021-03-28T19:22:17+00:00\",\"dateModified\":\"2024-12-08T22:07:47+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.latirus.com\/blog\/2021\/03\/28\/agrega-imagenes-drag-drop-en-laravel-y-vue-con-filepond\/\"},\"wordCount\":851,\"publisher\":{\"@id\":\"https:\/\/www.latirus.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.latirus.com\/blog\/2021\/03\/28\/agrega-imagenes-drag-drop-en-laravel-y-vue-con-filepond\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/i0.wp.com\/www.latirus.com\/blog\/wp-content\/uploads\/2021\/03\/filepond-laravel-vue.jpg?fit=1284%2C842&ssl=1\",\"keywords\":[\"Blade\",\"Drag\",\"Drop\",\"Filepond\",\"JS\",\"Laravel\",\"PHP\",\"Vue\"],\"articleSection\":[\"Laravel\",\"PHP\",\"Tutoriales\"],\"inLanguage\":\"es-AR\"},{\"@type\":[\"WebPage\",\"ItemPage\"],\"@id\":\"https:\/\/www.latirus.com\/blog\/2021\/03\/28\/agrega-imagenes-drag-drop-en-laravel-y-vue-con-filepond\/\",\"url\":\"https:\/\/www.latirus.com\/blog\/2021\/03\/28\/agrega-imagenes-drag-drop-en-laravel-y-vue-con-filepond\/\",\"name\":\"Agrega Im\u00e1genes Drag & Drop en Laravel y Vue con Filepond - Latirus\",\"isPartOf\":{\"@id\":\"https:\/\/www.latirus.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.latirus.com\/blog\/2021\/03\/28\/agrega-imagenes-drag-drop-en-laravel-y-vue-con-filepond\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.latirus.com\/blog\/2021\/03\/28\/agrega-imagenes-drag-drop-en-laravel-y-vue-con-filepond\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/i0.wp.com\/www.latirus.com\/blog\/wp-content\/uploads\/2021\/03\/filepond-laravel-vue.jpg?fit=1284%2C842&ssl=1\",\"datePublished\":\"2021-03-28T19:22:17+00:00\",\"dateModified\":\"2024-12-08T22:07:47+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.latirus.com\/blog\/2021\/03\/28\/agrega-imagenes-drag-drop-en-laravel-y-vue-con-filepond\/#breadcrumb\"},\"inLanguage\":\"es-AR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.latirus.com\/blog\/2021\/03\/28\/agrega-imagenes-drag-drop-en-laravel-y-vue-con-filepond\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es-AR\",\"@id\":\"https:\/\/www.latirus.com\/blog\/2021\/03\/28\/agrega-imagenes-drag-drop-en-laravel-y-vue-con-filepond\/#primaryimage\",\"url\":\"https:\/\/i0.wp.com\/www.latirus.com\/blog\/wp-content\/uploads\/2021\/03\/filepond-laravel-vue.jpg?fit=1284%2C842&ssl=1\",\"contentUrl\":\"https:\/\/i0.wp.com\/www.latirus.com\/blog\/wp-content\/uploads\/2021\/03\/filepond-laravel-vue.jpg?fit=1284%2C842&ssl=1\",\"width\":1284,\"height\":842,\"caption\":\"filepond-laravel-vue\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.latirus.com\/blog\/2021\/03\/28\/agrega-imagenes-drag-drop-en-laravel-y-vue-con-filepond\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Inicio\",\"item\":\"https:\/\/www.latirus.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Agrega Im\u00e1genes Drag &#038; Drop en Laravel y Vue con Filepond\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.latirus.com\/blog\/#website\",\"url\":\"https:\/\/www.latirus.com\/blog\/\",\"name\":\"Latirus\",\"description\":\"Desarrollo de Sistemas\",\"publisher\":{\"@id\":\"https:\/\/www.latirus.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.latirus.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es-AR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.latirus.com\/blog\/#organization\",\"name\":\"Latirus\",\"url\":\"https:\/\/www.latirus.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es-AR\",\"@id\":\"https:\/\/www.latirus.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.latirus.com\/blog\/wp-content\/uploads\/2020\/08\/latirus-logo-light.png\",\"contentUrl\":\"https:\/\/www.latirus.com\/blog\/wp-content\/uploads\/2020\/08\/latirus-logo-light.png\",\"width\":340,\"height\":150,\"caption\":\"Latirus\"},\"image\":{\"@id\":\"https:\/\/www.latirus.com\/blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/latirus\/\",\"https:\/\/linkedin.com\/company\/latirus\",\"https:\/\/www.youtube.com\/channel\/UCiTW7a7aDCBFg0qbIA5bq_Q\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.latirus.com\/blog\/#\/schema\/person\/aacf914583ee8f94bf64b989e164591c\",\"name\":\"Federico Perez\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es-AR\",\"@id\":\"https:\/\/www.latirus.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/368c5b2c9e1744ec70feb6608555b474bc5119b36bdc7890e35d51216d231669?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/368c5b2c9e1744ec70feb6608555b474bc5119b36bdc7890e35d51216d231669?s=96&d=mm&r=g\",\"caption\":\"Federico Perez\"},\"sameAs\":[\"http:\/\/latirus.com\/blog\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Agrega Im\u00e1genes Drag & Drop en Laravel y Vue con Filepond - Latirus","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.latirus.com\/blog\/2021\/03\/28\/agrega-imagenes-drag-drop-en-laravel-y-vue-con-filepond\/","og_locale":"es_ES","og_type":"article","og_title":"Agrega Im\u00e1genes Drag & Drop en Laravel y Vue con Filepond - Latirus","og_description":"Uno de los drag &amp; drop de im\u00e1genes mas populares que existen en Javascript es Filepond. No solamente te permite la carga de im\u00e1genes, sino tambi\u00e9n todo tipo de archivo que quieras que el usuario cargue en tu pagina. En esta gu\u00eda veremos como instalar Filepond en un proyecto de Laravel junto con Vue 2.0. [&hellip;]","og_url":"https:\/\/www.latirus.com\/blog\/2021\/03\/28\/agrega-imagenes-drag-drop-en-laravel-y-vue-con-filepond\/","og_site_name":"Latirus","article_publisher":"https:\/\/www.facebook.com\/latirus\/","article_published_time":"2021-03-28T19:22:17+00:00","article_modified_time":"2024-12-08T22:07:47+00:00","og_image":[{"width":1284,"height":842,"url":"https:\/\/www.latirus.com\/blog\/wp-content\/uploads\/2021\/03\/filepond-laravel-vue.jpg","type":"image\/jpeg"}],"author":"Federico Perez","twitter_card":"summary_large_image","twitter_misc":{"Escrito por":"Federico Perez","Tiempo de lectura":"5 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"NewsArticle","@id":"https:\/\/www.latirus.com\/blog\/2021\/03\/28\/agrega-imagenes-drag-drop-en-laravel-y-vue-con-filepond\/#article","isPartOf":{"@id":"https:\/\/www.latirus.com\/blog\/2021\/03\/28\/agrega-imagenes-drag-drop-en-laravel-y-vue-con-filepond\/"},"author":{"name":"Federico Perez","@id":"https:\/\/www.latirus.com\/blog\/#\/schema\/person\/aacf914583ee8f94bf64b989e164591c"},"headline":"Agrega Im\u00e1genes Drag &#038; Drop en Laravel y Vue con Filepond","datePublished":"2021-03-28T19:22:17+00:00","dateModified":"2024-12-08T22:07:47+00:00","mainEntityOfPage":{"@id":"https:\/\/www.latirus.com\/blog\/2021\/03\/28\/agrega-imagenes-drag-drop-en-laravel-y-vue-con-filepond\/"},"wordCount":851,"publisher":{"@id":"https:\/\/www.latirus.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.latirus.com\/blog\/2021\/03\/28\/agrega-imagenes-drag-drop-en-laravel-y-vue-con-filepond\/#primaryimage"},"thumbnailUrl":"https:\/\/i0.wp.com\/www.latirus.com\/blog\/wp-content\/uploads\/2021\/03\/filepond-laravel-vue.jpg?fit=1284%2C842&ssl=1","keywords":["Blade","Drag","Drop","Filepond","JS","Laravel","PHP","Vue"],"articleSection":["Laravel","PHP","Tutoriales"],"inLanguage":"es-AR"},{"@type":["WebPage","ItemPage"],"@id":"https:\/\/www.latirus.com\/blog\/2021\/03\/28\/agrega-imagenes-drag-drop-en-laravel-y-vue-con-filepond\/","url":"https:\/\/www.latirus.com\/blog\/2021\/03\/28\/agrega-imagenes-drag-drop-en-laravel-y-vue-con-filepond\/","name":"Agrega Im\u00e1genes Drag & Drop en Laravel y Vue con Filepond - Latirus","isPartOf":{"@id":"https:\/\/www.latirus.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.latirus.com\/blog\/2021\/03\/28\/agrega-imagenes-drag-drop-en-laravel-y-vue-con-filepond\/#primaryimage"},"image":{"@id":"https:\/\/www.latirus.com\/blog\/2021\/03\/28\/agrega-imagenes-drag-drop-en-laravel-y-vue-con-filepond\/#primaryimage"},"thumbnailUrl":"https:\/\/i0.wp.com\/www.latirus.com\/blog\/wp-content\/uploads\/2021\/03\/filepond-laravel-vue.jpg?fit=1284%2C842&ssl=1","datePublished":"2021-03-28T19:22:17+00:00","dateModified":"2024-12-08T22:07:47+00:00","breadcrumb":{"@id":"https:\/\/www.latirus.com\/blog\/2021\/03\/28\/agrega-imagenes-drag-drop-en-laravel-y-vue-con-filepond\/#breadcrumb"},"inLanguage":"es-AR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.latirus.com\/blog\/2021\/03\/28\/agrega-imagenes-drag-drop-en-laravel-y-vue-con-filepond\/"]}]},{"@type":"ImageObject","inLanguage":"es-AR","@id":"https:\/\/www.latirus.com\/blog\/2021\/03\/28\/agrega-imagenes-drag-drop-en-laravel-y-vue-con-filepond\/#primaryimage","url":"https:\/\/i0.wp.com\/www.latirus.com\/blog\/wp-content\/uploads\/2021\/03\/filepond-laravel-vue.jpg?fit=1284%2C842&ssl=1","contentUrl":"https:\/\/i0.wp.com\/www.latirus.com\/blog\/wp-content\/uploads\/2021\/03\/filepond-laravel-vue.jpg?fit=1284%2C842&ssl=1","width":1284,"height":842,"caption":"filepond-laravel-vue"},{"@type":"BreadcrumbList","@id":"https:\/\/www.latirus.com\/blog\/2021\/03\/28\/agrega-imagenes-drag-drop-en-laravel-y-vue-con-filepond\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Inicio","item":"https:\/\/www.latirus.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Agrega Im\u00e1genes Drag &#038; Drop en Laravel y Vue con Filepond"}]},{"@type":"WebSite","@id":"https:\/\/www.latirus.com\/blog\/#website","url":"https:\/\/www.latirus.com\/blog\/","name":"Latirus","description":"Desarrollo de Sistemas","publisher":{"@id":"https:\/\/www.latirus.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.latirus.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es-AR"},{"@type":"Organization","@id":"https:\/\/www.latirus.com\/blog\/#organization","name":"Latirus","url":"https:\/\/www.latirus.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"es-AR","@id":"https:\/\/www.latirus.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.latirus.com\/blog\/wp-content\/uploads\/2020\/08\/latirus-logo-light.png","contentUrl":"https:\/\/www.latirus.com\/blog\/wp-content\/uploads\/2020\/08\/latirus-logo-light.png","width":340,"height":150,"caption":"Latirus"},"image":{"@id":"https:\/\/www.latirus.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/latirus\/","https:\/\/linkedin.com\/company\/latirus","https:\/\/www.youtube.com\/channel\/UCiTW7a7aDCBFg0qbIA5bq_Q"]},{"@type":"Person","@id":"https:\/\/www.latirus.com\/blog\/#\/schema\/person\/aacf914583ee8f94bf64b989e164591c","name":"Federico Perez","image":{"@type":"ImageObject","inLanguage":"es-AR","@id":"https:\/\/www.latirus.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/368c5b2c9e1744ec70feb6608555b474bc5119b36bdc7890e35d51216d231669?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/368c5b2c9e1744ec70feb6608555b474bc5119b36bdc7890e35d51216d231669?s=96&d=mm&r=g","caption":"Federico Perez"},"sameAs":["http:\/\/latirus.com\/blog"]}]}},"jetpack_featured_media_url":"https:\/\/i0.wp.com\/www.latirus.com\/blog\/wp-content\/uploads\/2021\/03\/filepond-laravel-vue.jpg?fit=1284%2C842&ssl=1","jetpack-related-posts":[],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.latirus.com\/blog\/wp-json\/wp\/v2\/posts\/1351","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.latirus.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.latirus.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.latirus.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.latirus.com\/blog\/wp-json\/wp\/v2\/comments?post=1351"}],"version-history":[{"count":6,"href":"https:\/\/www.latirus.com\/blog\/wp-json\/wp\/v2\/posts\/1351\/revisions"}],"predecessor-version":[{"id":1358,"href":"https:\/\/www.latirus.com\/blog\/wp-json\/wp\/v2\/posts\/1351\/revisions\/1358"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.latirus.com\/blog\/wp-json\/wp\/v2\/media\/1357"}],"wp:attachment":[{"href":"https:\/\/www.latirus.com\/blog\/wp-json\/wp\/v2\/media?parent=1351"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.latirus.com\/blog\/wp-json\/wp\/v2\/categories?post=1351"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.latirus.com\/blog\/wp-json\/wp\/v2\/tags?post=1351"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}