文件上传进度和解析 Form Data

最近有一个小需求:上传文件的时候显示上传进度(上传了百分之多少)。这个需求不难,比如以下代码就能实现:

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta http-equiv="X-UA-Compatible" content="ie=edge" />
    <title>Upload file</title>
    <script>
      function uploadFile() {
        var fd = new FormData(document.forms[0]);
        var xhr = new XMLHttpRequest();

        xhr.upload.onprogress = function (e) {
          console.log('e.loaded:' + e.loaded + ', e.total:' + e.total)
          console.log(Math.round(e.loaded / e.total * 100) + '%') // 这里是上传进度
        }

        xhr.onreadystatechange = function(){
          if ( xhr.readyState === 4 ) {
            if ( xhr.status >= 200 && xhr.status < 300 || xhr.status === 304 ) {
              console.log(xhr.responseText)
            }
          }
        }

        xhr.open("POST", "/");
        xhr.send(fd);
      }
    </script>
  </head>
  <body>
    <form action="/" method="POST" enctype="multipart/form-data">
      <input type="file" name="file" id="file" required />
      <input type="hidden" value="1" name="hidden">
      <input type="text" name="text">
      <input type="range" name="range">
      <button onclick="uploadFile();" type="button" id="upload">Upload</button>
    </form>
  </body>
</html>

Continue reading “文件上传进度和解析 Form Data”

公众号月总结:欢迎胡喵呜到家

6 月大事记:胡喵呜到家(绝育,洗澡)、仿真工作基本完成(node,d3)、嵌入式开发、香港大屿山旅游

2019-06-30

2019-06-29

在我心情最沉重的时候,有一些通达世事的好心人告诉我,猫们有一种特殊的本领,能知道自己什么时候寿终。到了此时此刻,它们决不呆在主人家里,让主人看到死猫,感到心烦,或感到悲伤。它们总是逃了出去,到一个最僻静、最难找的角落里,地沟里,山洞里,树丛里,等候最后时刻的到来。

https://www.ruiwen.com/wenxue/jixianlin/200623.html

摘自季羡林《老猫》 Continue reading “公众号月总结:欢迎胡喵呜到家”

公众号月总结:node 入门

因为工作中仿真的功能用到了 node,作为一名前端,node 可算是入了门了。

2019-05-31

前端开发尤其 Node.js 开发中,经常要调用一些异步接口,如:文件操作、网络数据读取。而这些接口默认情况下往往是通过 Callback 方式提供的,当这种写法遇上比较复杂的逻辑时,就很容易出现 callback hell 的问题。

http://welefen.com/post/how-to-convert-callback-to-promise.html

乱语:最近在写 node,node 的回调奇多,但是通过包装成 promise,就可以通过 async、await 走上前端开发的康庄大道。美滋滋。

2019-05-30

对于很多初学投资的人来说,经常会弄不明白公司分红有什么意义,因为分红后要除权除息,手中持有的股票市值并没有发生任何变化,投资者并不能从公司分红中获得任何收益啊?

https://www.douban.com/note/506346913/

乱语:昨天中午还和同事聊起长城汽车要分红了,赶快买其股票,以此发财。我就说嘛,哪有这么简单的发财之道。 Continue reading “公众号月总结:node 入门”

我要求职

是这样的,每个人在职业初期找工作都相对困难,需要朋友的帮忙提拔之类的。但是你知道的,我提供不了这种伟大的支持,我能做的就是免费帮找工作的小伙伴内推一些简历。即便被人拒绝了,也能知道个消息,避免承受石沉大海杳无音讯之苦。

Continue reading “我要求职”

公众号月总结:怎么准备一个自驾游计划?

问题标题的答案在文章中,可自己查询。

2019-04-30

This article demonstrates how to create and dispatch DOM events. Such events are commonly called synthetic events, as opposed to the events fired by the browser itself.

https://developer.mozilla.org/en-US/docs/Web/Guide/Events/Creating_and_triggering_events

乱语:js 可以创建自定义事件,jQuery 的 trigger 方法是不是这个原理呢?

2019-04-29

招聘前端开发工程师了,各路朋友帮忙转发,内推加微信(370203400)。

https://www.lagou.com/jobs/5880513.html

Continue reading “公众号月总结:怎么准备一个自驾游计划?”

由 PHP7 和 Nginx 配置导致的 502 错误解决办法

最近有点懒,中午过了一点半还没有做饭吃,所以接下来捯饬的事情肯定不是吃饱了撑。

WordPress 最近发布了 5.2 的版本,对 PHP 的最低要求是 5.6.20,我的是 5.6.18,毕竟是 2016 年安装的 PHP 了,所以我想更新到 PHP7,据说 PHP7 更快。我们从 php 上又一次看到了时间流逝的痕迹,这也意味着我的网站已经运行 3 年了。

Continue reading “由 PHP7 和 Nginx 配置导致的 502 错误解决办法”

在 svg 中学习点到直线(线段)的最短距离算法

怎么计算点到直线的最短距离?学过数学的都会觉得这个话题不难,然而真正在编程中实操起来,还是有点不对劲的。你会觉得小时候,我的数学打过满分呐,现在这些知识却全都忘记了。

Continue reading “在 svg 中学习点到直线(线段)的最短距离算法”

挤地铁十乐

在人口稠密的城市里上班,没人喜欢挤地铁,即便大家前胸后背首尾相连,由前到后连连发力,却离上地铁还是有万步之遥;车上的不被挤下来已经是万幸了,到站了想下来的也是门都没有。不过我倒是例外,倒不是因为我有缩骨收筋见缝插针挤得上地铁的本事,而是我的心态逐渐变化,能发现一些意想不到的乐趣,总结如下。 Continue reading “挤地铁十乐”