18

我想为我的一个项目添加类似 gmail 的文件上传功能。有人可以帮我吗?

我的应用程序是在 vb.net 中构建的。

我将不胜感激任何帮助或指导。

谢谢

4

10 回答 10

32

查看SWFUpload,它本质上是一个 javascript api,用于 flash 绝对优越的文件上传处理能力。在浏览器最终赶上之前最好的事情。

从链接:

  • 在对话框中通过 ctrl/shift-selecting 一次上传多个文件
  • 所有事件的 Javascript 回调
  • 在上传开始前获取文件信息
  • 使用 XHTML 和 css 样式上传元素
  • 使用 HTML 上传文件时显示信息
  • 无需重新加载页面
  • 适用于所有支持 Flash 的平台/浏览器。
  • 如果 Flash 或 javascript 不可用,则优雅地降级为正常的 HTML 上传表单
  • 在上传开始之前控制文件大小
  • 仅在对话框中显示选择的文件类型
  • 排队上传,在开始上传之前删除/添加文件

演示

----- iframe 上传 -----

首先,您希望在您的页面上有一个 iframe。这用于服务器通信。您稍后会隐藏它,但现在,让它保持可见。给那个 iframe 一个 name 属性,比如“uploader”之类的。

现在,在您的表单中,将目标设置为 iframe 的名称,并将操作设置为您在服务器上将接受文件上传的脚本(如带有文件上传的普通表单)。在该表单内添加一个带有文本“添加文件”的链接。设置该链接以运行 javascript 函数,该函数将向表单添加新输入。这可以通过 DOM 完成,但我会推荐一个像jquery这样的 javascript 库。

将新文件输入添加到表单后,将该输入的模糊事件设置为将提交表单的 javascript 函数,然后定期检查它的输出。读取 iframe 可能会很棘手,但这是可能的。

让您的文件上传脚本输出“完成”。或上传完成时的文件名或其他内容。

每隔一秒左右检查一次,直到有内容为止。获得内容后,终止计时器并将文件输入替换为文件名(或“文件上传”)或其他名称。

用 css 隐藏你的 iframe。

于 2008-09-25T18:37:09.143 回答
11

来自小唯!(雅虎用户界面),https://yuilibrary.com/yui/docs/uploader/

  1. 在单个“打开文件”对话框中选择多个文件。
  2. 文件扩展名过滤器,方便用户选择。
  3. 文件上传的进度跟踪。
  4. 一系列文件元数据:文件名、大小、创建日期、修改日期和作者。
  5. 在文件上传过程的各个方面调度的一组事件:文件选择、上传进度、上传完成等。
  6. 在文件上传 POST 请求中包含附加数据。
  7. 由于修改了 SEND 缓冲区大小,宽带连接上的文件上传速度更快。
  8. 文件上传完成后的同页服务器响应。

完全免费

于 2008-09-25T18:39:02.273 回答
4

这是gmail 上传器克隆。这是带有一些额外功能的 gmail 上传器的精确克隆。上传后可以看到图片的缩略图,拖动缩略图可以改变顺序并替换任何缩略图。它是使用jQuery完成的。你可以在这里看到演示。源代码可在单个 zip 文件中免费下载

我希望您可以轻松删除一些代码并获得所需的东西。如果您需要进一步的帮助,可以在 ABCoder 博客上发表评论。

于 2009-05-14T05:04:23.113 回答
1

Now it has been 2 years, I used the uploadify in my legacy system and it works good. but you need to write some hack code (such like hold the session).

I recommend you use jquery upload, which is pure HTML, no swf, no session problems and really great!

== on 2013, what I wrote:

I am considering which to choose, SWFupload or uploadify .

but on SWFupload's official website , it says that it has not been under active development and the author is hoping someday the SWFupload could revive...

so ... I decided to try "uploadify", which seems supports many options, callbacks with lots of demos. (after checking its source code, I guess the author wraps the "SWFupload v1" and "SWFupload v2" in his "uploadify v3"...)

and there's a full list of this kind of uploaders.

于 2013-03-16T01:30:15.983 回答
1

对于非闪存解决方案,您可以使用NeatUpload。去年我在一个没有闪存要求的大型项目中使用了它。很容易集成到现有的解决方案中。我认为这是一件轻而易举的事。以我有限的经验,比在 ASP.NET 中使用 SWFUpload 更容易。可能是因为 NeatUpload 是专为 ASP.NET 构建的。

于 2008-09-26T18:12:47.000 回答
1

您是在谈论没有整页回发的上传吗?看一下http://www.phpletter.com/Demo/AjaxFileUpload-Demo/,它创建了一个隐藏的 iframe,复制输入控件,并使用 iframe 执行 post 以获取服务器上的文件。

如果您正在寻找当用户单击“附加文件”并自动弹出文件浏览对话框时的行为,可以通过 Javascript 完成,但在 FireFox 中不起作用,它具有要求用户的安全预防措施直接调用“浏览”按钮(而不是通过脚本以编程方式)。

对于“自动”上传,使用 Javascript 附加到“输入”控件的“值”属性的“更改”事件,以便在选择文件时执行。

于 2009-01-22T20:02:36.600 回答
1

您可以改用Flickr Uploader克隆。

于 2009-05-14T06:03:24.283 回答
0

您可以为此使用 iFrame

于 2008-09-25T23:25:59.837 回答
0

我想对“类似 Gmail 的”文件上传做更多的说明。

你的意思是如果它坐了一点,它会自动将它附加到草稿上吗?

于 2008-09-25T18:47:04.470 回答
0

Gmail 的代码很难找到,但如果我不得不猜测的话,它是这样工作的:

  • 当您单击“附加另一个文件”时,它会插入一个常规输入类型的文件控件。在 IE 上,它也可能以编程方式触发“浏览”按钮上的单击事件,因此文件对话框立即打开(它在 Firefox 上不这样做,而且我没有方便的 IE,但我相信 IE 允许这样做)
  • 选择文件后,它会检测输入控件的更改事件,并启动计时器。
  • 当计时器触发时,它会从表单中分离输入元素,并将其添加到隐藏 iframe 中的不同表单中,在主(可见)表单中放置一个简单的链接。然后提交隐藏的 iframe 以上传文件。(它也可能克隆输入元素,但我还没有尝试过这是否有效。)
于 2008-09-25T19:31:55.843 回答