【问题标题】:upload file from client to server without openFile dialog无需打开文件对话框即可将文件从客户端上传到服务器
【发布时间】:2012-05-21 16:05:03
【问题描述】:

我正在尝试创建一个 aspx 页面,我可以在其中直接将文件从客户端上传到服务器,而无需用户干预。我想做一些事情,比如当用户在 url 中指定文件路径时,必须将该特定文件上传到服务器。

示例: ht.tp://XXX.XXX.XXX.XXX/File_upload/File_Uploader.aspx?upload=C:/sample.csv&type=csv

用户可以在上传后更改值,无论他指定什么文件,都需要上传到位于 xxx.xxx.xxx.xxx 的服务器上

这只是一个试验,检查是否在服务器上创建了 csv 文件,并且它没有被创建。

我只想将客户端上的文件复制到服务器端,并且它必须仅由 aspx 页面以上面指定的格式提供。 如果还有其他好的方法,请指导我。谢谢。

【问题讨论】:

标签: javascript jquery html asp.net-mvc asp.net-mvc-3


【解决方案1】:

不可能在没有用户交互的情况下上传文件。他必须做一个明确的动作:拖放或选择一个带有对话窗口的文件。

这是因为安全原因,想象一下,如果一个 HTML 页面可以将它想要的任何文件上传到远程服务器,而无需用户选择哪个文件:它可以上传用户文档、设置、密码或者运行浏览器的 Windows 用户可以访问的任何内容。出于同样的原因,甚至value 属性也经常被忽略,并且并非每个浏览器都处理accept 属性(您可能或多或少地强制用户在他继续之前选择您想要的文件)。我记得旧版本的 Firefox 甚至不允许以编程方式单击 input 标记来上传文件。

【讨论】:

  • 看到你在那里做了什么(粗体'不'):D
  • @thisMayhem 我很好奇。有办法吗?
  • @subirkumarsao:如果你的意思是,我怎么看到大胆的动作,我正在阅读答案,然后它给了我一个警告说帖子被修改了,我重新加载并砰!你很大胆。
  • @thisMayhem 我以为您不同意该帖子,并且有一种可能的方法。没关系。我现在明白了。
【解决方案2】:

您应该发布文件的内容。

这就是浏览器在使用文件上传对话框时所做的事情。浏览器打开文件并通过 HTTP 发送内容。

例如,您可以使用wget --post-file=file.txt 发布内容。在服务器上,您可以读取 POST 数据以检索文件的内容。

【讨论】:

  • 是的,但他无法读取任意文件的内容(来自 HTML 页面)。我的意思是:他可以(当然)从 shell 脚本、应用程序或其他任何东西中做到这一点,但不能从 HTML 页面本身完成。
  • 感谢您的回复,我想要和您说的一样。如果您能给我提供示例代码,那将非常有帮助。基本上我的要求是不同的。我将从 .csv 文件中读取文件路径,并基于“文件路径”将上传到服务器。
猜你喜欢
  • 1970-01-01
  • 2016-12-19
  • 2010-10-17
  • 1970-01-01
  • 2011-01-28
  • 2014-04-05
  • 1970-01-01
  • 1970-01-01
  • 2016-05-16
相关资源
最近更新 更多