mirror of
https://github.com/wekan/wekan.git
synced 2025-12-18 16:30:13 +01:00
Fixed Non-ASCII attachment filename will crash when downloading.
Thanks to xet7 ! Fixes #2759
This commit is contained in:
parent
843ff8eaaa
commit
c2da477735
277 changed files with 30568 additions and 52 deletions
82
packages/wekan-cfs-data-man/server/data-man-buffer.js
Normal file
82
packages/wekan-cfs-data-man/server/data-man-buffer.js
Normal file
|
|
@ -0,0 +1,82 @@
|
|||
var bufferStreamReader = Npm.require('buffer-stream-reader');
|
||||
|
||||
/**
|
||||
* @method DataMan.Buffer
|
||||
* @public
|
||||
* @constructor
|
||||
* @param {Buffer} buffer
|
||||
* @param {String} type The data content (MIME) type.
|
||||
*/
|
||||
DataMan.Buffer = function DataManBuffer(buffer, type) {
|
||||
var self = this;
|
||||
self.buffer = buffer;
|
||||
self._type = type;
|
||||
};
|
||||
|
||||
/**
|
||||
* @method DataMan.Buffer.prototype.getBuffer
|
||||
* @private
|
||||
* @param {function} callback callback(err, buffer)
|
||||
* @returns {Buffer|undefined}
|
||||
*
|
||||
* Passes a Buffer representing the data to a callback.
|
||||
*/
|
||||
DataMan.Buffer.prototype.getBuffer = function dataManBufferGetBuffer(callback) {
|
||||
callback(null, this.buffer);
|
||||
};
|
||||
|
||||
/**
|
||||
* @method DataMan.Buffer.prototype.getDataUri
|
||||
* @private
|
||||
* @param {function} callback callback(err, dataUri)
|
||||
*
|
||||
* Passes a data URI representing the data in the buffer to a callback.
|
||||
*/
|
||||
DataMan.Buffer.prototype.getDataUri = function dataManBufferGetDataUri(callback) {
|
||||
var self = this;
|
||||
if (!self._type) {
|
||||
callback(new Error("DataMan.getDataUri couldn't get a contentType"));
|
||||
} else {
|
||||
var dataUri = "data:" + self._type + ";base64," + self.buffer.toString("base64");
|
||||
callback(null, dataUri);
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* @method DataMan.Buffer.prototype.createReadStream
|
||||
* @private
|
||||
*
|
||||
* Returns a read stream for the data.
|
||||
*/
|
||||
DataMan.Buffer.prototype.createReadStream = function dataManBufferCreateReadStream() {
|
||||
return new bufferStreamReader(this.buffer);
|
||||
};
|
||||
|
||||
/**
|
||||
* @method DataMan.Buffer.prototype.size
|
||||
* @param {function} callback callback(err, size)
|
||||
* @private
|
||||
*
|
||||
* Passes the size in bytes of the data in the buffer to a callback.
|
||||
*/
|
||||
DataMan.Buffer.prototype.size = function dataManBufferSize(callback) {
|
||||
var self = this;
|
||||
|
||||
if (typeof self._size === "number") {
|
||||
callback(null, self._size);
|
||||
return;
|
||||
}
|
||||
|
||||
self._size = self.buffer.length;
|
||||
callback(null, self._size);
|
||||
};
|
||||
|
||||
/**
|
||||
* @method DataMan.Buffer.prototype.type
|
||||
* @private
|
||||
*
|
||||
* Returns the type of the data.
|
||||
*/
|
||||
DataMan.Buffer.prototype.type = function dataManBufferType() {
|
||||
return this._type;
|
||||
};
|
||||
Loading…
Add table
Add a link
Reference in a new issue