- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
当我尝试上传大文件(zip- 100mb+)时,我收到超时错误ERR_CONNECTION_RESET
。我将 multer 与 node.js 一起使用,前端是 angular6。我的连接速度很慢,上传需要很长时间,通常上传过程 2-3 分钟后就会出现错误!
这托管在 elastic beanstalk - nginx
服务器
错误响应:
{
"errors":
{
"message": "Not Found",
"error": {}
}
}
代码:
router.post('/file_upload/:id', verify_token, (httpReq, httpRes) => {
httpRes.setTimeout(4800000, function(){ // 40 minute timeout adjust for larger uploads
console.log('Request has timed out.');
httpRes.send(408);
});
let tempFileName = '';
let tempMimeType = '';
// Define temporary storage on disk for file
var storage = multer.diskStorage({
destination: function (req, file, cb) {
cb(null, 'public/temp/');
},
filename: function (req, file, cb) {
let ext = file.originalname.substring(file.originalname.lastIndexOf('.'), file.originalname.length);
tempFileName = Date.now() + ext;
cb(null, tempFileName);
}
});
// Define upload action and validations
const upload = multer({
storage: storage,
limits: { fileSize: 1024 * 1024 * 1024 },
fileFilter: function (req, file, cb) {
tempMimeType = file.mimetype;
if (file.mimetype !== 'image/png' && file.mimetype !== 'image/jpeg' && file.mimetype !== 'image/jpg' && file.mimetype !== 'model/x.stl-binary' && file.mimetype !== 'application/zip' && file.mimetype !== 'application/x-7z-compressed' && file.mimetype !== 'application/vnd.rar') {
req.fileValidationError = 'Invalid file format';
return cb(null, false, new Error('Unsupported file format'));
}
cb(null, true);
}
}).single('patientFile');
// Upload file
upload(httpReq, httpRes, function(err) {
if(httpReq.fileValidationError) {
return httpRes.end({success: false, message: httpReq.fileValidationError});
}
if (err && err.code === 'LIMIT_FILE_SIZE') {
httpRes.status(400).json({success: false, message: err.message});
console.log(err.message);
}
uploadAttachment(httpReq.params.id, {
fileName: tempFileName,
description: httpReq.body.description,
mimeType: tempMimeType
}).then(data => {
httpRes.status(200).json({success: true, message: 'File uploaded successfully'})
}).catch(error => {
httpRes.status(400).json({success: false, message: error.message});
console.log(err.message);
});
});
});
/*
* Uploads the attachment to couchdb record of the associated patient
*
* @param patientId The patient Id
* @param fileData The file to upload {fileName: '', description: '', mimeType: ''}
*
* */
function uploadAttachment(patientId, fileData) {
return new Promise((resolve, reject) => {
couch_db.get(patientId, (err, doc)=> {
if (!err) {
let existingPatientRecords = {};
if (doc.hasOwnProperty('patientRecords')) {
existingPatientRecords = doc['patientRecords'];
}
const recordsData = {};
recordsData['patientRecords'] = existingPatientRecords;
recordsData['patientRecords'][fileData.fileName] = fileData.description;
couch_db.merge(patientId, recordsData, (err, res) => {
if (!err) {
const viewUrl = '_design/patient/_view/by_id';
const queryOptions = {
key: patientId
};
let documentRevision = '';
couch.get(dbName, viewUrl, queryOptions).then(
function(data, headers, status){
let selectedPatient = {};
if (data.data['rows'].length > 0 && data.data['rows'][0].hasOwnProperty('value')) {
selectedPatient = data.data['rows'][0].value;
documentRevision = selectedPatient['rev'];
if(documentRevision) {
var idAndRevData = {
id: selectedPatient['id'],
rev: selectedPatient['rev']
};
var attachmentData = {
name: fileData.fileName,
'Content-Type': fileData.mimeType
};
try {
var readStream = fs.createReadStream(`public/temp/${fileData.fileName}`);
var writeStream = couch_db.saveAttachment(idAndRevData, attachmentData, (body) =>{
fs.unlinkSync(`public/temp/${fileData.fileName}`);
resolve();
});
readStream.pipe(writeStream)
} catch(err) {
reject(err);
console.log('error1');
}
}
} else {
reject({error: 'NO_DATA_FOUND', message: 'No data found for the given patientId'});
}
}, (err) => {
reject(err);
console.log('error2');
});
}
});
}
});
});
}
最佳答案
您应该更改 /etc/nginx/nginx.conf
中的 nginx
配置并更改此:
http {
...
client_max_body_size 128m; #Any desired size in MB
...
}
然后重启服务sudo service restart nginx
关于node.js - ERR_CONNECTION_RESET : Error When i try to upload large files using node. js/multer ,部署在 elastic beanstalk -nginx 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53985930/
我在项目中使用ngx-uploader实现文件上传。 但是当我上传多个文件时,它将文件数组分成多个请求。 我尝试使用 ng2-file-upload 但结果相同。 最佳答案 请参阅 GitHub 上的
我想要一个类似 this 的上传者但我想要一个进度条,并在完成后通过电子邮件向我发送通知,就像 yousendit 那样。 任何开源的东西都会很酷。 最佳答案 Uploadify允许有进度条。至于电子
我正在尝试编写一个Python脚本,可以将图片和pdf上传到WordPress。我希望图像上传到文件夹‘/wp-Content/Uploads/’,将pdf文件上传到文件夹‘/wp-Content/U
开发自定义 portlet 以在 Liferay 6.2 中上传多个文件。 在以下位置的文档库 Portlet 中浏览 Liferay 源代码时找到 Liferay.Upload 组件: https:
我正在尝试使用 HTML5 制作一个带有进度表的文件 uploader 。这是我的代码: Test Progress Meter function submit
当我选择一些图像并放入 WordPress 文件 uploader 时,该组的第一张图像此时似乎已正确上传,而其他图像则卡住且未得到处理。 但是,经过一段时间的等待,我停止了该进程,重新加载了浏览器选
我今天刚刚从 Cordova (PhoneGap) 1.5 升级到 1.9,突然我的 FileTransfer 参数停止发布。我可以说出来,因为我让服务器端调试了 $_POST 参数,它们现在是空白的
我已经在运行 RHEL7 的服务器上安装了 Mediawiki v1.24.1。 我已经将它安装在/var/www/foohelp/wiki 下。但是,当我尝试上传文件时,出现以下错误: [f3eae
在 Symfony2 中上传图片时,有没有办法调整图片大小? ImagineAvalancheBundle只允许在检索图像时将图像大小调整为缩略图,这对我来说并不是真正的性能。 此外,在发布数据时检索
我在网站上使用blueimp-file-upload,并且在使用webpack来组织我的js代码。 我从NPM安装了blueimp-file-upload和jquery.ui.widget npm i
已关闭。此问题不符合Stack Overflow guidelines 。目前不接受答案。 要求我们推荐或查找工具、库或最喜欢的场外资源的问题对于 Stack Overflow 来说是偏离主题的,因为
我需要获取上传的文件以将其推送到文件列表,但我无法做到这一点...我希望有人可以帮助我: UIkit.upload('.test-upload', { url: `/api/gridfs/${d
我基本上是一名 Java 开发人员,仅了解有关 Android 开发的基本信息。我开发了一个 Web 端点,它接受文件和一些其他参数。 java代码是 @RequestMapping(path = "
我正在使用 symfony.com 的食谱文章来实现图像的文件上传选项。 现在我想将其他图像加载到实体中。 默认的编辑策略是: 1.从数据库中取出 2. 注入(inject)表单 3.坚持 不知何故,
我需要处理通过(有和没有分块)上传到 Amazon S3 的每个文件的二进制数据。你知道 Fineuploader 中是否有我可以用来处理每个二进制 block /文件的函数/信号吗?: 例如: pr
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 要求我们推荐或查找工具、库或最喜欢的场外资源的问题对于 Stack Overflow 来说是偏离主题的,
我读到 HTML5 规范引入了在上传表单中选择多个文件的功能。目前有哪些浏览器支持这个? Adobe AIR 是否支持它? 额外的问题:是否有利用此功能的 JavaScript 库? 最佳答案 即将发
我正在评估 Fine Uploader与其他各种选项相比,特别是 JQuery File Upload . 与依赖 Bootstrap 和 JQuery UI 的 JQuery File Upload
我正在尝试通过 Swift 2/Alamofire 将文件和参数上传到 Google 云端硬盘。在下面的代码中,我更改了以下行: "https://www.googleapis.com/upload/
我正在使用 Kendo UI Upload Control 并希望在同步模式下允许多个文件,但是当同时添加多个文件时,它们被组合在同一行项目中。有没有办法在组选择时将每个单独的文件作为自己的行项目?在
我是一名优秀的程序员,十分优秀!