2010-04-04 548 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套接字解决方案,则可以使其不会真正选择任何文件。