2014-01-28 78 views
0

Basicaly我想找到一種方法來增加最大上傳大小,我只是談論wordpress,因爲它恰好是我正在工作的平臺,但我需要的是找到一種方法來繞過php設置作爲WordPress的服務器似乎使用這些設置爲默認。 請注意,我只是在上傳圖片,沒有其他類型的文件。是否可以增加wordpress的最大上傳大小?

我發現在谷歌幾頁解釋或者如何編輯WordPress的設置(在我的情況下,這是不是會工作),或在服務器端更改PHP設置,我根本無法做到這一點。

我想到了一些方法來達到這個目標,但不知道從哪裏開始,因爲我不擅長圖像處理。我正在考慮評估圖片大小並將其分成幾個文件(它是否可以在js中使用),然後將它們上傳到服務器上,然後在php中進行組裝(我可以這樣做)。

你能告訴我你的想法嗎?我不是要求任何人做這項工作,我只是尋找一個提示,或者只是讓某人告訴我從哪裏開始,或者在前端使用其他任何語言。

非常感謝。

回答

1

是的,當然可以通過JS將文件拆分成塊,並單獨檢測這些文件。

  1. 聲明文件輸入字段:

    <input type="file" id="input"> 
    
  2. 訪問的第一個文件(有可能是更多,如果使用多個屬性):

    var selected_file = document.getElementById('input').files[0]; 
    
  3. 你現在有一個File對象,它也繼承了Blob接口。因此,您可以撥打Blob.slice將數據拆分爲塊。

  4. 通過AJAX

    上傳這些塊
  5. 在服務器端再次合併塊

進一步閱讀:

https://developer.mozilla.org/en-US/docs/Using_files_from_web_applications https://developer.mozilla.org/en-US/docs/Web/API/File https://developer.mozilla.org/en-US/docs/Web/API/Blob

+0

那麼這看起來相當方便,並且Set Sail Media對於交叉兼容性和這可能會導致舊版瀏覽器的問題是正確的嗎? 由於我對JavaScript不太熟悉,請問我會問,如果IE8用戶試圖上傳文件會發生什麼情況,他會在PHP流量控制中結束還是會觸發錯誤? – bastienbot

+1

@bastienbot是的,他是對的。舊的瀏覽器不支持File API(參見[這裏](http://caniuse.com/fileapi)的比較表)。使用這種瀏覽器的客戶只會得到JS錯誤(「文件:未定義的標識符」),除非您執行檢查是否支持File API。如果你使用後者,瀏覽器將處理該網站,就像它將包含一個正常的文件輸入字段一樣。 – ComFreek

+0

非常感謝,這完全回答了我的所有問題!關我現在編碼,歡呼! – bastienbot

1

限制是在服務器級別。

您必須調整您的服務器配置才能涓流到WordPress。

如果您將WordPress配置設置爲最大40MB,並且Apache(或其他Web服務器軟件)仍然具有2MB的限制,則您將永遠無法發佈超過2MB的內容。

一個選擇是使用基於Flash的上傳工具,該工具可以在上傳之前執行一些預處理來縮小圖像尺寸。

如果你真的想要花哨,你可以開發自己的基於Flash的上傳工具,將上傳塊分成2MB的部分(或者你的服務器的最大發布大小)和一些服務器端腳本來重新組裝,就像互聯網與數據包一樣。

+0

你甚至不需要Flash用於此任務。任何現代瀏覽器也支持File API(參考我的答案)。 – ComFreek

+0

是的,嗯......這是我認爲可以工作,所以它只能在Flash中工作或isit可能在JavaScript中分割圖像? – bastienbot

+0

@ComFreek「現代瀏覽器」翻譯爲「我不關心我的IE7,IE8,IE9用戶」。您的解決方案是一個很好的解決方案 - 但前提是OP不針對任何舊瀏覽器開發。 –