<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Rico Lima</title>
    <description>The latest articles on DEV Community by Rico Lima (@rico2290).</description>
    <link>https://dev.to/rico2290</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F455455%2F3be09621-c1d6-4e82-b834-13fe9c9e3b57.png</url>
      <title>DEV Community: Rico Lima</title>
      <link>https://dev.to/rico2290</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/rico2290"/>
    <language>en</language>
    <item>
      <title>TypeError: storage._handleFile is not a function</title>
      <dc:creator>Rico Lima</dc:creator>
      <pubDate>Wed, 19 Aug 2020 18:27:56 +0000</pubDate>
      <link>https://dev.to/rico2290/typeerror-storage-handlefile-is-not-a-function-1177</link>
      <guid>https://dev.to/rico2290/typeerror-storage-handlefile-is-not-a-function-1177</guid>
      <description>&lt;p&gt;require('dotenv')&lt;br&gt;
const multer = require('multer')&lt;br&gt;
const sftpMulter = require('multer-sftp')&lt;br&gt;
const ftpMulter = require('multer-ftp')&lt;br&gt;
const path = require('path')&lt;br&gt;
const crypto = require('crypto')&lt;/p&gt;

&lt;p&gt;const storageTypes = {&lt;br&gt;
    localStorage: multer.diskStorage({&lt;br&gt;
        destination: (request, file, cb)=&amp;gt;{&lt;br&gt;&lt;br&gt;
            cb(null, path.resolve(__dirname, '..', '/uploads'))&lt;br&gt;
        },&lt;br&gt;
        filename: (request, file, cb)=&amp;gt;{&lt;br&gt;&lt;br&gt;
            crypto.randomBytes(4, (err, hash)=&amp;gt;{&lt;br&gt;
            if(err) {&lt;br&gt;
                cb(err, 'tente novamente')&lt;br&gt;
            }&lt;br&gt;
            const nomeEmpresa = request.body.empresa.slice(0, 5).normalize('NFD')&lt;br&gt;
            .replace(/:|,|;|`|´|\?|%|+|=|^|~|[|]|||{|}|@|!|\$|&amp;amp;|*|#|\s|[\u0300-\u036f]/gi, "")&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;        const arquivoOriginalNome  = file.originalname.slice(file.originalname.length - 5, file.originalname.length).normalize('NFD')
        .replace(/:|,|;|`|´|\?|%|\+|\=|\^|~|\[|\]|\||{|}|@|!|\$|&amp;amp;|\*|#|\s|[\u0300-\u036f]/gi, "")

        const fileName = `${nomeEmpresa}_${hash.toString('HEX')}_${arquivoOriginalNome}`
        cb(null, fileName)
        })
    },
}),

ftpStorage: multer({ storage: sftpMulter({
    sftp: {
        host: process.env.REACT_APP_BASE_HOST_FTP,
        secure: false,
        port: process.env.REACT_APP_BASE_PORT_FTP,
        user: process.env.REACT_APP_BASE_USER_FTP,
        pass: process.env.REACT_APP_BASE_PWD_FTP,  
        debugMode: true
    },
    destination: (request, file, cb)=&amp;gt; {
        console.log(file, request.body)
      cb(null, '/fastdating')
    },
    filename: (request, file, cb)=&amp;gt; {
        crypto.randomBytes(4, (err, hash)=&amp;gt;{
            if(err) {
                Console.error(err)
                cb(err, 'tente novamente')
            }
            const nomeEmpresa = request.body.empresa.slice(0, 5).normalize('NFD')
            .replace(/:|,|;|`|´|\?|%|\+|\=|\^|~|\[|\]|\||{|}|@|!|\$|&amp;amp;|\*|#|\s|[\u0300-\u036f]/gi, "")

            const arquivoOriginalNome  = file.originalname.slice(file.originalname.length - 5,       file.originalname.length).normalize('NFD')
            .replace(/:|,|;|`|´|\?|%|\+|\=|\^|~|\[|\]|\||{|}|@|!|\$|&amp;amp;|\*|#|\s|[\u0300-\u036f]/gi, "")

            const fileName = `${nomeEmpresa}_${hash.toString('HEX')}_${arquivoOriginalNome}`
            cb(null, fileName)
        })
    }
    }) 
})
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;} &lt;/p&gt;

&lt;p&gt;module.exports = {&lt;br&gt;
    /* saida: (request)=&amp;gt;console.log('entrando...', request), */&lt;br&gt;
    storage: storageTypes.ftpStorage,&lt;br&gt;
    limits: {&lt;br&gt;
        fileSize: 4 * 1024 * 1024,&lt;br&gt;
    },&lt;br&gt;
    fileFilter: (request, file, cb) =&amp;gt; {&lt;br&gt;
        const allowedMimes = [ 'application/pdf' ]&lt;br&gt;
        if (allowedMimes.includes(file.mimetype.toLowerCase())) {&lt;br&gt;
            cb(null, true)&lt;br&gt;
        }&lt;br&gt;
        if (!(allowedMimes.includes(file.mimetype.toLowerCase()))) {&lt;br&gt;
            cb(new Error('Só pdf '))&lt;br&gt;
        }else{&lt;br&gt;
           new Error()&lt;br&gt;
        }&lt;br&gt;
    },&lt;/p&gt;

&lt;p&gt;}&lt;/p&gt;

</description>
      <category>node</category>
      <category>javascript</category>
      <category>react</category>
    </item>
  </channel>
</rss>
