原本是使用dropzone来处理文件上传,它只支持IE10+浏览器。因此在ie9下无法使用,同时它还会有一个提示,并显示一个缺省的文件上传描述及上传按钮。的确不方便。今天把它去掉了,改为了插件。因此你可以这样操作:
- 登录进入wshell
- 输入 upload,在界面上会显示一个上传的按钮,点击它就可以上传。同时如果浏览器支持html5 file api的话,还可以拖拽上传。在上传时,如果支持,还可以显示进度百分比(本来想实现一个进度条,后来一想,还是百分比简单些:)。上传时文件会放在当前路径下。
wshell还新増了一个show命令可以用来显示当前目录下的图片。它可以带参数或不带,带参数可以使用通配符,不带时就是所有图片。
还修正了使用subprocess.Popen时返回信息不完整的一个bug。原来的逻辑大体上是:
while self.process.poll() is None: line = self.process.stdout.readline() if line: self.process.timestamp = now() self.output('data', self.server.safe_encode(line.rstrip()))
但是发现,有时输出少东西。后面发现,因为使用了gevent.subprocess,所以stdout.readline()是不会阻塞的,如果没数据会返回 ''。因此上面的处理就会造成,读出一行后,再循环时,程序可能已经结束了,后面的数据就读不出来了。后来改为:
while self.process.poll() is None: while 1: line = self.process.stdout.readline() if line: self.process.timestamp = now() self.output('data', self.server.safe_encode(line.rstrip())) else: break
即循环读取readline(),这样保证先把能读的数据全部读出来。这样就没有问题了。