2010-04-04 549 views
1

我想將文件上傳到同樣屬於我的服務器。我可以想到兩種方式,以及如何實現這一點。方法1: 使用HTTP POST請求上傳文件。上傳文件的標準方式。方法2:它是一個兩步過程。 首先,客戶端向服務器發送一個包含文件所有細節的POST請求。 然後,服務器向客戶端發出獲取請求以獲取文件的內容。使用HTTP發送請求上傳文件

這裏方法2似乎更安全,因爲服務器在控制之中。只有當服務器認爲合適時,服務器才能向服務器請求數據,並限制需要傳輸的數據量。

我仍然很困惑,因爲我不是這方面的專家。任何人對此有更多的後見之明都可以請你分享。

謝謝

+0

服務器向客戶端發出GET請求?這是不可能的。服務器無法啓動與客戶端的通信。只有選項是方法1. – 2010-04-05 05:24:07

+0

可能重複[什麼是最好的客戶端瀏覽器庫上傳多個文件通過http?](http://stackoverflow.com/questions/159600/what-is-the-best-client-一邊瀏覽器庫到上載多文件 - 過度HTTP) – 2010-06-30 20:33:46

回答

0

我認爲一個正常的POST上傳方式更可靠。方法2不必要的複雜,你也可能遇到令人討厭的防火牆和NAT問題。

如果您在服務器上設置適當的限制,則不會遇到上傳大小等問題。

1

最好的辦法是方法1,只是你的標準了POST,輸入文件類型和加密類型的multipart/form-data的

<form action="." enctype="multipart/form-data" method="post"> 
    <p>files: <input type="file" name="datafile" size="40"></p> 

    <div> 
    <input type="submit" value="submit"> 
    </div> 
</form> 
-1

定義更安全?

如果你想控制用戶可以上傳什麼不是,那麼首先想想他們應該做什麼和不做什麼。 第一步可能是定義允許的允許擴展數組。

$extensions = array("pdf","doc","txt"); 

然後,如果用戶上傳的文件,使用字符串來降低和獲取文件擴展名,然後檢查是否擴展名陣列中

if(!in_array($extension,$extensions)) 
//return false or what ever you want do if file extension is not allowed. 

下面是如何,你可以使用上傳文件小教程PHP和HTML。

http://www.tizag.com/phpT/fileupload.php

1

,如果你使用套接字在自定義客戶端(Delphi編寫爲例),你可以做方法2,即:用戶請求的文件從客戶端上傳,客戶端發送請求到服務器,服務器響應並要求客戶端發送文件,然後客戶端在沒有用戶干預的情況下發布請求的文件。標準的Web瀏覽器將無法理解服務器對文件的請求。如果您使用delphi套接字解決方案,則可以使其不會真正選擇任何文件。