验证图像宽度&在Node,Express with Multer上传之前的高度

时间:2018-02-04 12:44:09

标签: javascript node.js express npm

我正在使用Nodejs框架和expressejs中构建项目Multer作为视图引擎,我被困在需要上传图片的位置,我正在使用70px * 40Px,但问题是我想设置一个标准,如果图像没有上传到服务器的图像高度或宽度小于或大于预设大小,比如<broker xmlns="http://activemq.apache.org/schema/core" brokerName="Central-Dev-Broker" persistent="true" offlineDurableSubscriberTimeout="8" offlineDurableSubscriberTaskSchedule="3000" useJmx="true"> <destinationPolicy> <policyMap> <policyEntries> <policyEntry topic=">" > <pendingMessageLimitStrategy> <constantPendingMessageLimitStrategy limit="1000"/> </pendingMessageLimitStrategy> </policyEntry> <policyEntry queue=">"> <deadLetterStrategy> <individualDeadLetterStrategy queuePrefix="DLQ." useQueueForQueueMessages="true"/> </deadLetterStrategy> </policyEntry> </policyEntries> </policyMap> </destinationPolicy> <managementContext> <managementContext createConnector="false"/> </managementContext> <persistenceAdapter> <!--kahaDB directory="${activemq.data}/kahadb"/--> <jdbcPersistenceAdapter dataSource="#mysql-ds"/> </persistenceAdapter> <systemUsage> <systemUsage> <memoryUsage> <memoryUsage percentOfJvmHeap="70" /> </memoryUsage> <storeUsage> <storeUsage limit="100 gb"/> </storeUsage> <tempUsage> <tempUsage limit="50 gb"/> </tempUsage> </systemUsage> </systemUsage> <transportConnectors> <transportConnector name="openwire" uri="tcp://0.0.0.0:61616?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/> <transportConnector name="amqp" uri="amqp://0.0.0.0:5672?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/> </transportConnectors> <plugins/> <shutdownHooks> <bean xmlns="http://www.springframework.org/schema/beans" class="org.apache.activemq.hooks.SpringContextHook" /> </shutdownHooks> </broker> <bean id="mysql-ds" class="org.apache.commons.dbcp2.BasicDataSource" destroy-method="close"> <property name="driverClassName" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/db_activemq?relaxAutoCommit=true"/> <property name="username" value="root"/> <property name="password" value="root"/> <property name="poolPreparedStatements" value="true"/> </bean> <import resource="jetty.xml"/> </beans> ,早些时候我曾经与codeignitor无缝地做到这一点。

我可以搜索使用GM(Graphics Magick)的所有解决方案,但是在通过Multer上传图像后进入游戏。我不是在寻找代码帮助,而是关于npm中任何已知插件的任何建议,可以为我做这个。

注意:我不相信客户端验证,即使我使用的仍然保持服务器端验证工作,所以我也在寻找服务器端解决方案。

1 个答案:

答案 0 :(得分:1)

在客户端,您可以将文件读入新的IMG元素。然后你可以检查宽度和宽度。图像元素的高度。

JSFiddle:https://jsfiddle.net/vz7yjbmf/

$('input').on('change',function(){
    var input=this;
    var reader = new FileReader();
    reader.onload = function(e) {
      var x=new Image()
      x.onload=function(){
        alert('width=' + x.width + ', height:' + x.height)
      }
      x.src= e.target.result;
    }

    reader.readAsDataURL(input.files[0]);
  }      
})