云控后台系统 经验总结(表单和文件上传等)

1. qq emoji替换

接收到这样的字符串,通过正则匹配到每组方括号然后进行替换

var _str = i.content.replace(/\[.{1,3}\]/g, (str) => {    //i.content为遍历出来的消息记录
     var index;
     Object.keys(faceCode).forEach((key, _index) => {    //faceCode为字符串与样式对应的关系,也可以通过参数去和后台约定好,不用这样查找
         if (key === str) {
             index = _index;
         }
     });
     if (index) {
         var html = `<img src="https://wx2.qq.com/zh_CN/htmledition/v2/images/spacer.gif" text="${str}" class="qq-emoji qq-emoji${index}"/>`;
         return html;
     }
    return str;
});

2. pre做输入框

2.1 参考的例子

可编辑区域在指定位置插入html,并且光标位置不改变

2.2一个奇怪的现象, 如果点击button,则编辑框的焦点位置不会改变,但是除了button的元素焦点就会改变

<button id="btn">点我</button>
<div id="div" style="border: 1px solid gray">点我2</div>
<pre class="pre" style="position:absolute;width:800px;height:240px;background-color: #f5f5f5" contenteditable="true">

$(‘#btn‘).click((e) => {
    $(‘.pre‘)[0].focus();
});
$(‘#div‘).click((e) => {
    $(‘.pre‘)[0].focus();
})

3. form表单相关和文件上传

3.1. form表单的enctype

enctype 有三种取值:

  1. application/x-www-form-urlencoded 在发送前编码所有字符(默认)
  2. multipart/form-data 不对字符编码,在使用包含文件上传控件的表单时,并且不用FormData数据对象必须使用该值
  3. text/plain 空格转换为 "+" 加号,但不对特殊字符编码

当然也可以不用设置enctype为multipart/form-data,即不通过表单生成的数据,而是手动取数据,用FormData合并成一个对象,进行发送

3.2. 文件上传的起源

最早的HTTP POST是不支持文件上传的,给编程开发带来很多问题。但是在1995年,ietf出台了rfc1867,也就是《RFC 1867 -Form-based File Upload in HTML》,用以支持文件上传。所以Content-Type的类型扩充了multipart/form-data用以支持向服务器发送二进制数据

3.3 文件上传用files类数组做大小,文件类型的判断

<input type="file" id="test" />
var files = document.getElementById("test").files;
for (var i in files) {
    if (files[i].type.indexOf(‘image‘) === -1) {
        xxx
        return;
    }
    if (files[i].size/(1024*1024) > 1) {
        xxx
        return;
    }
}

3.4. 清空input输入框,否则第二次选择相同的文件不会触发change事件

$(‘#upload‘)[0].value = "";

3.5. 展示本地上传图片 用FileReader对象读取为base64

var fileReader = new FileReader();
fileReader.onload = (e) => {
    document.getElementById(‘picPreview‘).src = e.target.result;
};
var file = document.getElementById(‘#upload‘).files[0];
fileReader.readAsDataURL(file);

3.6. 上传视频,本地生成缩略图

  1. 用户点击 input type=file 触发 change读取 input.files,
  2. 获得 File 实例创建一个url URL.createObjectURL(file)video 加载 url ,
  3. 随便找一帧,drawImage() 画到 canvas 上把 canvas 转换为 img
function createImg() {
    var scale = 0.15,
    video = $(‘#video‘)[0],
    canvas = document.createElement("canvas"),
    canvasFill = canvas.getContext(‘2d‘);
    canvas.width = video.videoWidth * scale;
    canvas.height = video.videoHeight * scale;
    canvasFill.drawImage(video, 0, 0, canvas.width, canvas.height);

    return canvas.toDataURL("image/jpeg");
}
$(‘#upload‘)[0].onchange = (e) => {
    var windowURL = window.URL || window.webkitURL;
    var videoURL = windowURL.createObjectURL(e.target.files[0]);
    $(‘#video‘).attr(‘src‘, videoURL);

    setTimeout(() => {   //一定要加延时,否则图片读取不到
        var imgSrc = createImg();
        $(‘#img‘).attr(‘src‘, imgSrc);
    }, 500)
}

4. 做一个页面,首先要把数据结构,用户操作哪些数据想明白

5. 做UI交互,要把用户肯定要做的操作自动做掉,把不确定的操作让用户自己选择。

原文地址:https://www.cnblogs.com/baimeishaoxia/p/11966935.html

时间: 2024-10-07 03:06:09

云控后台系统 经验总结(表单和文件上传等)的相关文章

Struts2文件上传(基于表单的文件上传)

•Commons-FileUpload组件 –Commons是Apache开放源代码组织的一个Java子项目,其中的FileUpload是用来处理HTTP文件上传的子项目 •Commons-FileUpload组件特点 –使用简单:可以方便地嵌入到JSP文件中,编写少量代码即可完成文件的上传功能 –能够全程控制上传内容 –能够对上传文件的大小.类型进行控制 •需要下载Common-FileUplaod框架地址(当然MyEclipce中Struts2支持里自带有这两个包): –http://jak

AJAX提交form表单带文件上传

过了三天才想要写博客,这样不好,要改正 在做毕设的时候,用户发帖涉及到了文件上传的问题,在这里记录一下 背景: 在用户发帖的时候,用户只想发表文字postText,还有些用户想在发表postText的同时还发表一些图片,如何做? 上代码 不写的太细了,和流水账似的,挑重点记录一下. 1.前台的文件上传 本来想用form表单直接上传了,但是form提交时会刷新整个页面,但这不是我想要的,所以使用了ajax提交form表单. 利用ajax提交表单需要用到jquery.form.js这个包,网上有很多

(25) java web的struts2框架的使用-基于表单的文件上传

一,首先创建一个表单页面 <body> <form action="uploads" method="post" enctype="multipart/form-data"> 文件: <input type="file" name="uploadObject"> <input type="submit" value="提交"&

9.16 基于form表单的文件上传实现 ContextType

基于form表单传递普通键值对的方式传递数据: enctype="application/x-ww-form-urlencoded" 基于form表单上传文件 传递数据,非键值对: enctype="multipart/form-data" enctype="text/plain" 这种方式几乎不用 基于ajax传递普通键值对的方式传递数据到服务器 只要请求体有数据,request.body都有值 .但request.post 只有当conten

java表单+多文件上传~~源代码

private static final String C_ACTION_CREAT_ACTIVITY = "meeting_register_addActivity"; @RequestMapping(value = "/addActivity") public CIPResponseMsg addActivity(HttpServletRequest request, HttpServletResponse response) throws Exception

django_5:表单1——文件上传

上传文件1 class UserForm(forms.Form): name = forms.CharField() headImg = forms.FileField() def regist(req): if req.method == 'POST': uf = UserForm(req.POST, req.FILES) if uf.is_valid(): print(uf.cleaned_data['name']) #通过clean_data获取字段 print(req.FILES) #类

构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(32)-swfupload多文件上传[附源码]

原文:构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(32)-swfupload多文件上传[附源码] 文件上传这东西说到底有时候很痛,原来的asp.net服务器控件提供了很简单的上传,但是有回传,还没有进度条提示.这次我们演示利用swfupload多文件上传,项目上文件上传是比不可少的,大家这个心里都知道.主要提供给源码说明及下载 最终效果图: SWFUpload的特点: 1.用flash进行上传,页面无刷新,且可自定义Flash按钮的样式; 2.可以在浏

利用windows系统ftp命令编写的BAT文件上传[转]

利用windows系统ftp命令编写的BAT文件上传[转] 利用windows系统ftp命令编写的BAT文件上传[转] 在开发中往往需要将本地的程序上传到服务器,而且用惯了linux命令的人来说.在windows下就比较麻烦了.为了方便特编写一个BAT程序来帮助需要这样功能的人.如果用其他IDE工具自带的FTP功能也可以,^_^!      命令: todev.bat /index.asp  默认d:\cnweb为网站的根目录.      我的 http://www.lawcar.cn/ htt

表单数据处理及上传

所有要传递到后台的input内容,除submit外都要加name属性,而且需要与后台对应 GET 和POST区别: get以明文在链接中显示,传递速度快,只能传输文本,数据大小有限 post通过协议传输,能传输更多数据,可以传输文件 用$_GET,$_POST或$_REQUEST获取表单提交数据: 表单变量传输多个值,需要对表单元素的name属性增加一对中括号,如: <input type="checkbox"name="love[]"/> 文件上传的相