首页技术html表单文件上传下载(html模板下载)

html表单文件上传下载(html模板下载)

编程之家2026-06-281199次浏览

其实html表单文件上传下载的问题并不复杂,但是又很多的朋友都不太了解html模板下载,因此呢,今天小编就来为大家分享html表单文件上传下载的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!

html表单文件上传下载(html模板下载)

html中怎么上传文件代码

在HTML标准中,XMLHttpRequest对象被重新定义,被称为“XMLHttpRequest Level 2”,其中包含了以下5个新特性:

1、支持上传、下载字节流,比如文件、blob以及表单数据。

2、增加了上传、下载中的进度事件。

3、跨域请求的支持。

4、允许发送匿名请求(即不发送HTTP的Referer部分)。

5、允许设置请求的超时。

html表单文件上传下载(html模板下载)

在这篇教程中,我们主要关注第一和第二项特性,尤其是第二项——它能够提供我们想要的上传进度。和之前的方案不同,这个方案并不要求服务器作出特殊的设置,因此大家边看教程就可以边动手试试了。

上面图示的就是我们能够实现的内容:1、显示上传的文件信息,比如文件名、类型、尺寸。

2、一个能够显示真实进度的进度条。

3、上传的速度。

4、剩余时间的估算。

5、已上传的数据量。

html表单文件上传下载(html模板下载)

6、上传结束后服务器返回的响应。

另外,凭借XMLHttpRequest,我们的上传过程整个都是异步的,因此用户在上传文件的时候,依然可以操作网页当中的其它元素,并不需要专门等待上传的完成。而在上传结束后,我们能够获取服务器发回的响应,因此整个上传过程都显得相当顺理成章。

ajax+html实现文件上传有哪几种方法

这次给大家带来ajax+html实现文件上传有哪几种方法,ajax+html实现文件的注意事项有哪些,下面就是实战案例,一起来看一下。

引语:大家都知道,html中上传文件就一个input,type=file就搞定了。但是,这个标签的样式,实在不值得提点什么,要改动他的样式,恐怕也是较难的。但是其实挺简单,今天就来说说上传文件小技巧吧!

1.怎样自定义样式?

1)、只管按照自己喜欢看到的样式去定义即可,如<a href='javascript:;' class='upload-button'></a>,可以是背景图片效果,可以是文字指示,总之想怎么改怎么改!有了按钮,还需要一个文件名容器,用来存放选择上传文件时的名字,从而不让上传看起来枯涩难懂。

2)、添加真正需要上传的文件控件,并设置属性display:none;如<input type='file' class='hide'/>,这样就有了真正的上传文件的地方了。所以,可以说,上传文件的界面有多漂亮取决你的想象力!

2.怎样触发事件?

这是个重点,触发的点应该是自己写的样式处,而真正起作用的元素却是隐藏的,但是并不影响它的点击效果,只需要给它触发一个点击事件即可,如$('#target-file').trigger('click');

3.多选文件?

多文件上传,只需使用html的一个file的multiple=true即可,当然你也可以选择第三方的上传控件,如swfupload,效果是真心不错的,但是对于不想用的插件的人,就不起作用了。

4.相关插件?

界面美化其实可以使用jqueryui等插件;

要做一些友好的交互的话,都会用到ajax技术,无刷新切换、异步上传、提交,最后,其实ajax的路径也是可以保留的,使用pushState, replaceState实现 pjax.

表单验证:validform.js

异步提交文件: jquery.form.js

友好的弹窗提示:layer.js

5.一点兼容性的问题?

做界面方面的工作,最怕的也是很重要的工作,就是各个浏览器之间的兼容性问题,下面主要列几点供参考:

table宽度的处理方式不一致;

select, input显示高度不一致;

alert弹窗不一致;

...

6.演示代码

<a rel="external nofollow" rel="external nofollow" href="javascript:;" up-type-id="1" class="btn btn-default small-btn switch-upload-method"><span>本地上传</span></a>

<a rel="external nofollow" rel="external nofollow" href="javascript:;" up-type-id="2" class="upload-file-instead btn btn-default small-btn switch-upload-method"><span>打包工具</span></a>

<input type="file" name="apkFiles[]" id="local-upload-real-file" class="upload-file-real hide" response-id="local-upload-container" multiple='true'/>

<input type="file" name="apkToolFiles[]" id="apk-tool-real-file" class="upload-file-real hide" response-id="apk-tool-container-textarea"/>

<script>

$(function(){

var alertTitle='系统提示:';

var submitId='#do-submit';

$('#taskForm').Validform({

btnSubmit: submitId,

tiptype: 1,

ignoreHidden: true,

dragonfly: false,

tipSweep: true,

label:".label",

showAllError: false,

postonce: true,

ajaxPost: true,

datatype:{

},

beforeCheck:function(curform){

},

beforeSubmit:function(curform){

$('.upload-file-real').attr('disabled','disabled');

$(submitId).attr('disabled','disabled');//提交前禁用按钮

ajaxSubmitForm(curform);

$(submitId).removeAttr('disabled');//失败后恢复可提交

return false;

},

submitForm: function(){}//不再起作用

});

//切换上传方法

$('.switch-upload-method').off().on('click', function(){

//$(submitId).attr('disabled','disabled');

var pObj=$(this).parent().find('.switch-upload-method');

var index= pObj.index(this);

var uploadTypeId=$('#upload-type-id').val();//上传方式:1:打包工具;2:本地上传,0:没有上传方式

var uploadType=$(this).attr('up-type-id');

if(parseInt($('#sub-channel-count').html())> 0){

if(uploadTypeId!= uploadType){

layer.alert('还有子渠道包数据,不能完成切换,请先确认清除再切换!');

return false;

}

}

pObj.not(':eq('+ index+')').removeClass('btn-danger').addClass('btn-default');

pObj.eq(index).removeClass('btn-default').addClass('btn-danger');

if(uploadType== 36){//local-upload

$('#upload-type-id').val(uploadType);

$('#init-apk-container').show();

$('#apk-tool-container').hide();

$('#upload-main-control').find('.del-it-main').css({display:'inline-block'});

$('#local-upload-real-file').trigger('click');

}else if(uploadType== 35){//apk-tool

$('#upload-type-id').val(uploadType);

$('#init-apk-container').hide();

$('#local-upload-container').hide();

$('#upload-main-control').find('.del-it-main').hide();

$('#apk-tool-container').show();

}

});

//本地上传

$('#local-upload-real-file').off().on('change', function(){

if(!$(this).val()){

return false;

}

file_size= 0;

filepath=$(this).val();

maxFileSize= 30* 1024* 1024;

var browserCfg={};

var ua= window.navigator.userAgent;

if(ua.indexOf("MSIE")>=1){

browserCfg.ie= true;

}else if(ua.indexOf("Firefox")>=1){

browserCfg.firefox= true;

}else if(ua.indexOf("Chrome")>=1){

browserCfg.chrome= true;

}

if(browserCfg.ie){

var img= new Image();

img.src= filepath;

file_size= img.fileSize;

while(true){

if(img.fileSize> 0){

if(img.fileSize> maxFileSize){

alert("上传包超过30MB限制,请使用打包工具上传!");

return false;

}

break;

}

}

} else{

file_size= this.files[0].size;

if(file_size> maxFileSize){

alert("上传包超过30MB限制,请使用打包工具上传!");

return false;

}

}

var responseObjId=$(this).attr('response-id');

var responseObj=$('#'+ responseObjId);

$('#taskForm').ajaxSubmit({

url:'/aa/bb/uploadTmpApk',

resetForm: false,

dataType:'json',

beforeSubmit: function(option){

window.loading= layer.load(2);

},

success: function(data, statusText){

layer.close(window.loading);

if(data.status== 1){

$('#version-identifier').val(data.version);

responseObj.html(data.apkInfoHtml);

responseObj.show();

var delObj=$('#upload-main-control').find('.del-it-main');

delObj.css({'display':'inline-block'});

$('#sub-channel-count').html(data.apkTotal);

$('#init-apk-container').hide();

$(submitId).removeAttr('disabled');

}else{

layer.alert(data.info,{title: alertTitle});

}

},

error: function(data){

layer.close(window.loading);

layer.alert('未知错误,请稍后再试!');

}

});

return false;//防止dialog自动关闭

});

//打包工具

$('#apk-tool-real-file').off().on('change', function(){

if(!$(this).val()){

return false;

}

var responseObjId=$(this).attr('response-id');

var responseObj=$('#'+ responseObjId);

$('#Form').ajaxSubmit({

url:'/aa/bb/uploadTmpApkTool',

resetForm: false,

dataType:'json',

beforeSubmit: function(option){

window.loading= layer.load(2);

},

success: function(data, statusText){

layer.close(window.loading);

if(data.status== 1){

$('#version-identifier').val(data.version);

responseObj.html(data.infoHtml);

var parentContainer= responseObj.parent().parent(),

nameContainer= parentContainer.find('.apk-name-container'),

delObj= parentContainer.find('.del-it-apk-tool');

nameContainer.html(data.apkName);

nameContainer.attr('title', data.apkName);

$('#apk-tool-file-tmp').html(data.fileInfo);

$(submitId).removeAttr('disabled');

}else{

layer.alert(data.info,{title: alertTitle});

}

},

error: function(data){

layer.close(window.loading);

layer.alert('未知错误,请稍后再试!');

}

});

return false;//防止dialog自动关闭

});

$('.apk-tool-upload-button').on('click', function(){

$('#apk-tool-real-file').trigger('click');

});

});

</script>以上,主要就是,使用隐藏的input file标签选择,选择文件之后立即ajax提交,最后,整个表单ajax提交的过程。

合理使用一些css, js,让你的网页更自由!

相信看了本文案例你已经掌握了方法,更多精彩请关注Gxl网其它相关文章!

推荐阅读:

ajax怎样提交form表单与实现文件上传

Ajax向后台传输json格式数据出现错误应如何处理

html5如何实现文件上传功能

本篇文章将给大家分享一个案例,利用HTML5实现文件上传的功能,有一定的参考价值,希望对大家有所帮助

html5新增的一些API方法使我们实现一些功能更加简便也可以实现更多的动态效果,接下来将详细介绍文件上传功能的实现

案例实现所用到的知识点

(1)multiple是HTML5新增属性主要用于多个值文件的上传,规定了所输入字段可选择多个值,一般与input属性中email和 file共用

(2)querySelector()方法主要用于返回文档中匹配指定选择器的第一个元素,如果要返回所有的元素可用querySelectorAll()方法替代。

(3)FileReader对象允许应用程序异步读取存储在计算机上的文件的内容,使用 File或 Blob对象指定读取的文件或数据。其中File对象可以是来自<input>元素上选择文件后返回的FileList对象

(4)readAsDataURL:将读取出来的图像文件,直接显示在网页上,达到预览效果

代码展示

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>文件读取</title>

<style>

.box{

width:500px;

height:500px;

border: 1px solid#ccc;

margin:300px auto;

position: relative;

background-color:rgb(167,239,251);

}

.file{

position: absolute;

bottom:0;

left:0;

}

#img{

position: absolute;

left:100px;

bottom:30px;

}

</style>

</head>

<body>

<div>

<input type="file" multiple>

<img src="" alt="" id="img">

</div>

<script>

var file= document.querySelector('.file');/*获取到了文件表单元素*/

/*选择文件后触发*/

file.onchange= function(){

/*初始化了一个文件读取对象*/

var reader= new FileReader();

/*读取文件数据 this.files[0]文件表单元素选择的第一个文件*/

reader.readAsDataURL(this.files[0]);

/*加载*/

reader.onload= function(){

/*读取完成显示图片*/

console.log(this.result);

document.querySelector('#img').src= this.result;

}

}

</script>

</body>

</html>效果显示

未选中前

选中后

关于本次html表单文件上传下载和html模板下载的问题分享到这里就结束了,如果解决了您的问题,我们非常高兴。

正则表达式实例详解?20个常用的正则表达式excel函数乘法符号 乘法函数符号是什么