MCPcopy
hub / github.com/nodeWechat/wechat4u / uploadMedia

Method uploadMedia

src/core.js:498–631  ·  view source on GitHub ↗
(file, filename, toUserName)

Source from the content-addressed store, hash-verified

496
497 // file: Stream, Buffer, File, Blob
498 uploadMedia (file, filename, toUserName) {
499 return Promise.resolve().then(() => {
500 let name, type, size, ext, mediatype, data
501 return new Promise((resolve, reject) => {
502 if ((typeof (File) !== 'undefined' && file.constructor == File) ||
503 (typeof (Blob) !== 'undefined' && file.constructor == Blob)) {
504 name = file.name || 'file'
505 type = file.type
506 size = file.size
507 data = file
508 return resolve()
509 } else if (Buffer.isBuffer(file)) {
510 if (!filename) {
511 return reject(new Error('文件名未知'))
512 }
513 name = filename
514 type = mime.lookup(name)
515 size = file.length
516 data = file
517 return resolve()
518 } else if (file.readable) {
519 if (!file.path && !filename) {
520 return reject(new Error('文件名未知'))
521 }
522 name = path.basename(file.path || filename)
523 type = mime.lookup(name)
524 file.pipe(bl((err, buffer) => {
525 if (err) {
526 return reject(err)
527 }
528 size = buffer.length
529 data = buffer
530 return resolve()
531 }))
532 }
533 }).then(() => {
534 ext = name.match(/.*\.(.*)/)
535 if (ext) {
536 ext = ext[1].toLowerCase()
537 } else {
538 ext = ''
539 }
540
541 switch (ext) {
542 case 'bmp':
543 case 'jpeg':
544 case 'jpg':
545 case 'png':
546 mediatype = 'pic'
547 break
548 case 'mp4':
549 mediatype = 'video'
550 break
551 default:
552 mediatype = 'doc'
553 }
554
555 let clientMsgId = getClientMsgId()

Callers 1

sendMsgMethod · 0.80

Calls 2

getBaseRequestMethod · 0.95
getClientMsgIdFunction · 0.90

Tested by

no test coverage detected