战前的上海完全是一座不设防的城市。这是国民政府和国军将领们没有真正意识到的现实问题,也是整个“八一三”淞沪会战无法回避的现实问题。
五年前,张治中第五军投入“一二八”淞沪战场后,日本担心继续在上海打下去会激起民国政府全面抗日,激起中国民众抗日,还担心英美增兵上海的近30艘战舰,随时维护自身在华利益,介入淞沪战事,加之又刚刚占领东北,立足未稳。因此,日本被迫与华协商,签订了《淞沪停战协定》。
日本人的这种被迫也只是停留形式上的,在协定内容上日方占据了主动,对于民国政府在上海和淞沪地区的军事与防务,却是极其不利。《淞沪停战协定》核心利益条款,也是这个协定第二条规定:“中国军队在本协定所涉及区域内之常态恢复,未经决定办法以前,留驻其现在地位。”根据协定附件第一号的解释,中国军队“留驻现在地位”的具体位置,限于以下一线之以西地区,这条线是:“由安亭镇正南,苏州河岸之一点起,向北沿安亭镇东最近小浜之西岸至望仙桥,由此北过小浜,至沙头东四公里之一点,再由此向西北至扬子江边之浒浦口,并包括浒浦口在内”。也就是说在上海,中方完全不能驻扎正规军队。
此后,第十九路军调离上海,就再也没有正规军队进驻上海。在开战前,上海只驻有淞沪警备司令部所属的上海市保安总团两个团兵力,此外上海市警察局的警察总队有警力2000人上下,这点武装力量主要是对内维持治安,而不是对外国防、对外防范日军入侵的,他们的战斗力也是堪忧。面对日军的入侵,他们怕是连个牙缝都塞不住。
上海市不设防,不仅是上海市这座城市不设防,是整个淞沪地区,包括陆、海都不设防。至于黄浦江和长江交汇处的吴淞要塞区,原来是设置有要塞炮和岸炮的,早已被毁于“一二八”淞沪会战时的日军炮火,直至这次开战前,都未恢复。海岸线设防如此废弛,海上防御更是一片空白。从杭州湾到扬子江入海口一带,靠近大陆的海面上,有多少岛屿,还有那么大的崇明岛,都没有驻军,连基本的监测站、警戒阵地都没有。黄浦江、扬子江航道同样是不设防的。黄浦江董家渡以下至吴淞、长江口以内至江阴以东的航道都是敞开着的,日舰可以在这里自由航行。其实,这个因素也是日军长江舰队顺利逃出生天的主要原因之一。