作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
<分区>
我正在使用 native javascript 方法将图像上传到 Express 服务器。我的应用程序中有两种类型的上传。
<input type=file>
的文件对象<canvas>
的图像我对 firefox、chrome 和 safari 的第一种上传没有问题。文件图像正在正确上传,我能够查看上传到服务器的文件。
但是,我对第二种上传有问题。我无法使用 Safari 浏览器正确上传文件。它总是会在服务器中产生一个 0 字节的文件。但它在 firefox 和 chrome 上都运行良好。
以下是我的代码片段:
const content = canvasRef.toDataURL()
const file = convertDataURLToFile(content, "signature.png");
fileUploadHelper(file, fileUploadUrl(), "signature");
function convertDataURLToFile (file, fileName) {
const blobBin = window.atob(file.split(",")[1]);
const array = [];
for (var i = 0; i < blobBin.length; i++) {
array.push(blobBin.charCodeAt(i));
}
return new window.File([new Uint8Array(array)], fileName, {type: "image/png"});
};
function fileUploadHelper (file, url, inputType) {
const xhr = new window.XMLHttpRequest();
const formData = new window.FormData();
formData.append("file", file);
xhr.open("POST", `${url}&documentType=${inputType}`);
xhr.send(formData);
};
表达片段:
app.post("/fileUpload", function (req, res) {
req.pipe(req.busboy);
req.busboy.on("file", function (fieldname, file, filename) {
file.on("data", function (data) {
console.log(data.length);
});
var fstream = fs.createWriteStream("./tempFiles/" + filename);
file.pipe(fstream);
fstream.on("close", function () {
var response = clone(baseResponse);
response.status = SUCCESS;
return res.end(JSON.stringify(response));
});
});
});
所以我正在做的是使用 toDataURL()
从 Canvas 中获取 base64然后将其转换为文件对象,然后将其附加到 FormData
对象,然后使用 XMLHttpRequest
将其上传到服务器.
此方法适用于 Chrome 和 Firefox,但不适用于 Safari。根本不会在任何地方抛出错误。有谁知道为什么吗?
我有以下正则表达式 /[a-zA-Z0-9_-]/ 当字符串只包含从 a 到z 大小写、数字、_ 和 -。 我的代码有什么问题? 能否请您向我提供一个简短的解释和有关如何修复它的代码示例? //var
我是一名优秀的程序员,十分优秀!