今天做两个页面:一个通过扫描仪扫描纸质文件保存到本地,并上传到数据库。另一个从数据库中获取扫描件。两个页面都有预览图片的功能。
由于扫描控件扫描进来的图片是侧着放的,而且图片太小,需要旋转扫描件并放大。
放大的问题:通过JS实现放大,使用<div><img></img><div>标签,放大很容易写,因为div的大小是可以随机设置的。只需获取img对象再设置height,width即可。使用自定义标签虽然可以设置img对象的像素大小,但是在界面上图片大小并不改变。因为自定义的标签其属性没有跟着改变。另外img中的src属性不管是本地绝对路径还是从后台数据库获取的都可以正常显示。
旋转的问题:使用imagView.style.filter = 'progid:DXImageTransform.Microsoft.BasicImage(Rotation=' + direction + ')';进行图片旋转。发现当只有一个页面时,旋转没有任何问题,但如果同时打开两个页面来预览图片并旋转,则旋转不能正常使用,同时后台报Connection reset by peer: socket write error错误。
上网查了下原因:
Connection reset by peer: socket write error错误分析:
常出现的Connection reset by peer: 原因可能是多方面的,不过更常见的原因是:
①:服务器的并发连接数超过了其承载量,服务器会将其中一些连接Down掉;
②:客户关掉了浏览器,而服务器还在给客户端发送数据;
③:浏览器端按了Stop
通常原因为:远程主机上对等方应用程序突然停止运行,或远程主机重新启动,或远程主机在远程方套接字上使用了“强制”关闭 (参见setsockop t(SO_LINGER))。另外,在一个或多个操作正在进行时,如果连接因“keep-alive”活动检测到一个失败而中 断,也可能导致此错误。此时,正在进 行的操作以错误码WSAENETRESET失败返回,后续操作将失败返回错误码WSAECONNRESET。
但是如果频繁出现,就表示很 多客户端连接到Apache服务器的响应时间太长了,可能是网络的问题或者服务器性能问题。
也就是说两个连接冲突导致其中一个被服务器强制down掉。查看从数据库查询扫描件预览页面的代码发现回传给后台进行查询的参数为空,但是界面上任然可以看到图片。又发现,两个预览界面img元素名一样,于是修改元素名,问题解决。至于为什么不同页面的元素还会导致冲突,没有想明白。