在不使用ajax的情况下使用javascript上载文件
我尝试使用输入标记和type='file'上载文件,我想将其保存在我的项目文件夹中。我可以在不使用ajax的情况下借助javascript来实现吗?。。有没有可能 这是我的密码在不使用ajax的情况下使用javascript上载文件,javascript,html,Javascript,Html,我尝试使用输入标记和type='file'上载文件,我想将其保存在我的项目文件夹中。我可以在不使用ajax的情况下借助javascript来实现吗?。。有没有可能 这是我的密码 函数func3(){ var x=document.getElementById(“myFile”); if('x中的“文件”){ 对于(var i=0;i
函数func3(){
var x=document.getElementById(“myFile”);
if('x中的“文件”){
对于(var i=0;i
我认为这是不可能的,因为存在安全问题。对于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);
}
}
函数3(e){
var files=e.target.files;
var file=files[0];
var fileType=file.name;
fileType=fileType.substring(fileType.lastIndexOf(“.”+1);
if(文件和文件){
var reader=new FileReader();
reader.onload=函数(readerEvt){
var binaryString=readerEvt.target.result;
base64=btoa(二进制字符串);
$('#fld content type').val(文件类型);
$('#fld content').val(encodeURIComponent(base64));
};
reader.readAsBinaryString(文件);
}
}
AJAX是一种获取客户端数据并将其异步发送到服务器的方法,无需将a窗口用作HTTP客户端来显示响应。因此,如果您想上传一个文件而不触发“页面重新加载”,那么您的选项仅限于AJAX或(请不要这样做)使用隐藏的iframe并将表单指向那里。如果您想将上传的文件存储在浏览器中,那么您可以在没有AJAX的情况下使用浏览器数据库(Localstorage等),但这不会将文件上传到您的服务器。我真的很怀疑是的,有AJAX。使用为任务提供的工具,尝试以“不同”的方式做事情很少有用…你所说的工具是什么意思…它们是什么类型的?好的。。。考虑这个……不需要任何安全问题,只针对一个实现,我们能做到吗?这就是我要问的…我想你们不能,这是不可能的,因为浏览器不允许这样做,因为安全问题。好的。谢谢你的回答。我想用这个我们可以读文件,然后用另一种格式写,然后我们会用它的原始格式保存。。。但是,如果我想直接保存上传的文件的类型,无论它可能是什么(如txt,png,jpg,gif)…我可以这样做的方式,我问??。。。。。。。。告诉我onething上面的代码是否适用于任何格式??不,您不能直接保存文件,您必须将其更改为base64格式,在服务器端,您需要将其转换回文件格式,然后保存。