javascript - react fetch javascript 上传视频 nodejs multer
问题描述
我正在使用 fetch 上传视频
const formData = new FormData();
formData.append('name', asset.name);
formData.append('file', asset.file);
fetch(generateUrl(`/asset/video?token=${getState().server.token}`), {
method: 'POST',
body: formData
})
.then(response => {
if (!response.ok) return response.json().then(error => { throw new Error(error.message) });
return response.json()
})
.catch(err => console.error(err))
我从 react ref 获取文件this.fileInput = React.createRef()
,文件值是this.fileInput.current.files[0]
如此asset.file === this.fileInput.current.files[0]
然后我将它上传到我的服务器
const multer = require('multer');
const upload = multer({})
const router = express.Router();
router.post('/video', upload.single('file'), dataProvider.security.middleware('post_asset'), (req, res, next) => {
fs.writeFileSync('test.mp4', req.file.buffer);
})
但是我在转移的某个地方遇到了问题,我可以识别它。
创建的文件test.mp4
已损坏,原始文件为 540KB 和test.mp4
750KB
使用 const upload = multer({ dest: '/Users/ajouve/Downloads/' }) 我还有一个 750KB 的文件并且已损坏
标Content-Length
头是540240
所以发送的内容应该没问题
解决方案
Multer 应该为你写文件,所以这一行
fs.writeFileSync('test.mp4', req.file.buffer);
不应该在那里。也许这就是为什么你得到更大的尺寸,因为双写。
所以把目的地放回去
const upload = multer({dest:"/Users/ajouve/Downloads/"})
使帖子返回一些“好的”响应。
我这里的设置几乎相同,其余的都很好。
dataProvider.security.middleware('post_asset')
我也不会用,不知道有什么作用。
推荐阅读
- python-3.x - pymongo.errors.ConfigurationError:必须安装“dnspython”模块才能使用 mongodb+srv:// URI
- json - 我通过请求的 Python3 REST JSON API 不起作用
- python - 如何将存储在时间对象中的日期和时间转换为日期时间对象?
- html - CSS背景颜色过渡/加载时滑过
- c# - 如何为 WCF 服务执行未知方法
- javascript - 生成的定义中的打字稿语法错误
- python-3.x - 为什么没有时谷歌浏览器会在我的烧瓶 url 上附加一个正斜杠?
- javascript - 分布式 Wso2sp 未使用 JavaScript 部署 Siddhi 应用程序
- r - 如何在用户指定的命名空间下安装/加载 R 库?
- python - 从表中抓取数据