javascript - 使用没有ajax的javascript上传文件
问题描述
我尝试使用输入标签和 type='file' 上传文件,我想将其保存在我的项目文件夹中。我可以在不使用 ajax 的情况下在 javascript 的帮助下做到这一点吗?.. 有什么可能吗?
这是我的代码。
function func3() {
var x = document.getElementById("myFile");
if ('files' in x) {
for (var i = 0; i < x.files.length; i++) {
var file = x.files[i];
if ('name' in file) {
alert("File selected. File name =" + file.name);
}
}
}
}
<input type="file" id="myFile" multiple size="50" onchange="func3()">
解决方案
在 js 中上传文件需要添加两个隐藏字段,一个用于文件类型,另一个用于文件内容。您需要将文件内容更改为base64并存储到隐藏字段中。请参见下面的代码。然后使用ajax上传base64内容。
<input type="file" id="myFile" multiple size="50" onchange="func3(e)">
<input type="hidden" id="fld-content" name="fld-content">
<input type="hidden" id="fld-content-type" name="fld-content-type">
function func3(e) {
var files = e.target.files;
var file = files[0];
var fileType = file.name;
fileType = fileType.substring(fileType.lastIndexOf(".") + 1);
if (files && file) {
var reader = new FileReader();
reader.onload = function (readerEvt) {
var binaryString = readerEvt.target.result;
base64 = btoa(binaryString);
$('#fld-content-type').val(fileType);
$('#fld-content').val(encodeURIComponent(base64));
};
reader.readAsBinaryString(file);
}
}
推荐阅读
- java - JAVA:Stripe webhook 错误:未找到与有效负载的预期签名匹配的签名
- android - 如何制作像Linkedin这样的进度条来显示个人资料状态?
- python - 循环和计数python 2d数组
- html - 如何在危险的SetInnerHTML中设置默认值?
- azure - Azure 静态网站 - 在 Chrome 中显示旧内容
- java - Java Spring Test Autowired Controller 为空错误
- python - 无法在 Django 中显示静态图像和加载 CSS
- python - 在pyqt中使用sceneEventFilter捕获悬停事件
- api - WSO2 ESB 返回一串 json 结构
- flutter - Sliver Appbar [Collapsing Toolbar] 在 Flutter 中从左到中动画标题