戰前的上海完全是一座不設防的城市。這是國民政府和國軍將領們沒有真正意識到的現實問題,也是整個“八一三”淞滬會戰無法回避的現實問題。
五年前,張治中第五軍投入“一二八”淞滬戰場後,日本擔心繼續在上海打下去會激起民國政府全麵抗日,激起中國民眾抗日,還擔心英美增兵上海的近30艘戰艦,隨時維護自身在華利益,介入淞滬戰事,加之又剛剛占領東北,立足未穩。因此,日本被迫與華協商,簽訂了《淞滬停戰協定》。
日本人的這種被迫也隻是停留形式上的,在協定內容上日方占據了主動,對於民國政府在上海和淞滬地區的軍事與防務,卻是極其不利。《淞滬停戰協定》核心利益條款,也是這個協定第二條規定:“中國軍隊在本協定所涉及區域內之常態恢複,未經決定辦法以前,留駐其現在地位。”根據協定附件第一號的解釋,中國軍隊“留駐現在地位”的具體位置,限於以下一線之以西地區,這條線是:“由安亭鎮正南,蘇州河岸之一點起,向北沿安亭鎮東最近小浜之西岸至望仙橋,由此北過小浜,至沙頭東四公裏之一點,再由此向西北至揚子江邊之滸浦口,並包括滸浦口在內”。也就是說在上海,中方完全不能駐紮正規軍隊。
此後,第十九路軍調離上海,就再也沒有正規軍隊進駐上海。在開戰前,上海隻駐有淞滬警備司令部所屬的上海市保安總團兩個團兵力,此外上海市警察局的警察總隊有警力2000人上下,這點武裝力量主要是對內維持治安,而不是對外國防、對外防範日軍入侵的,他們的戰鬥力也是堪憂。麵對日軍的入侵,他們怕是連個牙縫都塞不住。
上海市不設防,不僅是上海市這座城市不設防,是整個淞滬地區,包括陸、海都不設防。至於黃浦江和長江交匯處的吳淞要塞區,原來是設置有要塞炮和岸炮的,早已被毀於“一二八”淞滬會戰時的日軍炮火,直至這次開戰前,都未恢複。海岸線設防如此廢弛,海上防禦更是一片空白。從杭州灣到揚子江入海口一帶,靠近大陸的海麵上,有多少島嶼,還有那麽大的崇明島,都沒有駐軍,連基本的監測站、警戒陣地都沒有。黃浦江、揚子江航道同樣是不設防的。黃浦江董家渡以下至吳淞、長江口以內至江陰以東的航道都是敞開著的,日艦可以在這裏自由航行。其實,這個因素也是日軍長江艦隊順利逃出生天的主要原因之一。