我正在尝试为Meteor框架编写一个文件上传器.原理是将客户端上的文件从ArrayBuffer拆分为4096位的小包,通过Meteor.method发送到服务器.
下面简化的代码是客户端向服务器发送一个块的部分,它会重复,直到offset到达data.byteLength:
// data is an ArrayBuffer
var total = data.byteLength;
var offset = 0;
var upload = function() {
var length = 4096; // chunk size
// adjust the last chunk size
if (offset + length > total) {
length = total - offset;
}
// I am using Uint8Array to create the chunk
// because it can be passed to the Meteor.method natively
var chunk = new Uint8Array(data, offset, length);
if (offset …Run Code Online (Sandbox Code Playgroud) 我想在客户端上使用React,在REST服务器上使用Java Spring Boot,客户端和服务器都打包在一起,因此它们托管在同一个应用服务器上.
我已经可以通过/api路径查询服务器API .
但是,(如何)我可以使用BrowserRouter的react-router-dom客户端,而不是在(路由器V4) HashRouter?
我不太了解Spring Boot,但我想我可以在服务器上查看路由是否匹配/api,然后我会返回index.html带有基于HTTP查询位置路径处理路由的所有反应逻辑?
我希望我很清楚,我不希望URL中的哈希值和路由必须在客户端上完成.
我有一个文件流,我想传入一个名为transformRead()的方法,该方法接受一个readStream和一个writeStream,但是我不知道如何创建临时写流...我是否必须使用一个文件?我只想要从rs到ws的pipe(),然后将ws压缩并发送到响应。
// Get file stream
var rs = store.getReadStream(fileId);
var ws = ?????;
// Execute transformation
store.transformRead(rs, ws, fileId);
var accept = req.headers['accept-encoding'] || '';
// Compress data if supported by the client
if (accept.match(/\bdeflate\b/)) {
res.writeHead(200, {
'Content-Encoding': 'deflate',
'Content-Type': file.type
});
ws.pipe(zlib.createDeflate()).pipe(res);
} else if (accept.match(/\bgzip\b/)) {
res.writeHead(200, {
'Content-Encoding': 'gzip',
'Content-Type': file.type
});
ws.pipe(zlib.createGzip()).pipe(res);
} else {
res.writeHead(200, {});
ws.pipe(res);
}
Run Code Online (Sandbox Code Playgroud) 我发布了一个 npm 包:https ://www.npmjs.com/package/jk-router
当用作经典的全局变量时它工作正常window.Router。但是当我尝试在一个非常基本的 Meteor 应用程序中使用 ES6 语法导入它时,它确实返回underfined......
如您所见,我正在使用命名导出(https://github.com/jalik/jk-router/blob/master/src/router.js#L174)并且确保我也使用默认导出(https: //github.com/jalik/jk-router/blob/master/src/router.js#L559)。
但以下都不返回 Router 对象:
import Router from "jk-schema";
import {Router} from "jk-schema";
Run Code Online (Sandbox Code Playgroud)
也许 wepback 配置有问题? https://github.com/jalik/jk-router/blob/master/webpack.config.js
const path = require("path");
const Package = require("./package.json");
const isProd = process.argv.indexOf("-p") !== -1;
const filename = Package.name + (isProd ? ".min" : "");
module.exports = {
target: "web",
entry: {
bundle: path.join(__dirname, "src/router.js")
},
output: {
path: path.join(__dirname, "dist"),
filename: `${filename}.js`
},
resolve: { …Run Code Online (Sandbox Code Playgroud) javascript ×4
node.js ×3
meteor ×2
arraybuffer ×1
file-upload ×1
java ×1
npm ×1
reactjs ×1
spring-boot ×1
stream ×1
webpack ×1