簡體   English   中英

Wordpress插件通過Ajax發送base64圖像數據時出現問題-400/404/500錯誤

[英]Problem with Wordpress plugin sending base64 image data via Ajax - 400/404/500 errors

我正在開發一個WordPress插件,供客戶設計自定義T恤,並可以選擇上傳自己的圖片。 該插件會截取幾個屏幕截圖,然后通過電子郵件將其發送給打印部門。

在Javascript中,我將屏幕截圖轉換為base64數據,然后將其通過Ajax發送到PHP文件,這將為客戶的設計創建一個文件夾,根據數據創建圖像並將屏幕截圖存儲在其中。

大多數屏幕截圖/ base64數據發送都很好,例如僅添加文本不會造成任何問題。 但是,如果用戶上載圖片並且放大比例過大,則會導致各種錯誤(有時為400,有時為404,有時為500)。

通過Wamp在Windows上通過本地安裝程序運行此程序,很好。 我可以上傳圖像並將其縮放到12倍,沒有問題。 但是,當我在實時站點上嘗試此操作時,如果我將任何圖像縮放到4倍以上,我都會遇到上述問題,而對於大多數圖像,如果我什至嘗試將它們放大到全部1倍,就會發生上述問題。

圖像的分辨率/文件大小似乎有影響,盡管效果並不明顯。 我可以發送一個巨大的純紅色正方形或1x比例的普通圖像。

起初,我認為這是一個POST數據限制問題,除了實時站點的POST限制是我在WAMP設置中設置的限制的兩倍(沒有此問題)。

也,甚至陌生人。 我測試了上傳圖像,但是用簡單字符替換了base64數據(因此頁面中存在放大的圖像,但是它的base64數據不是通過POST發送的),但是我仍然遇到相同的問題。 因此,我認為這不是一個簡單的POST限制問題。

我一生無法找到解決方案,對您的幫助將不勝感激。

弄清楚了它的解決方法,如果其他人遇到相同的問題並且遇到這篇文章,我將給出解決方案。

基本上,我將base64圖像數據轉換為Blob,並將其附加到新創建的formData對象。 我發現,將我的現時和動作(經過修改以使用AJAX的admin-ajax方法工作)附加到formData有助於解決javascript方面的大多數問題。 在AJAX請求中,我將processData和contentType設置為false。

至於PHP方面,我設置了一個變量,使其等於我剛剛發送的特定$ _FILES數組元素。 我在該變量(即Blob數據)上使用了file_get_contents(),並將其包裝在file_put_contents()中以實際寫入圖像。

那是快速版本。 如果有人想要更詳細的解釋,請告訴我。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM