如何使用JSON和jQuery将文件发送到服务器

5

我需要使用jQuery将文件发送到我的服务器,请问如何使用JSON进行操作?

文件类型不重要,我想在服务器应用程序上接收一个字节数组或类似的东西。

如果有帮助的话,我正在使用ASP.NET应用程序,但我的问题并不是如何在服务器端处理它,而是如何使用jQuery发送文件数据。

我发现了一些使用Flash文件的jQuery上传插件,还有一些不使用Flash的插件,但我真正想知道的是整个过程是如何工作的,而不仅仅是使用别人已经创建好的东西!

5个回答

5

jQuery是JavaScript。我认为你想通过Ajax发送数据这是不可能的。你可以使用一个iframe将文件上传到临时目录(不是默认的temp),然后将信息返回给父页面,告诉它文件保存在哪里,然后你就可以使用它。

没有办法使用Ajax将文件上传到服务器,这太不安全了。

我现在撤回上面的声明。

现在你可以使用JavaScript发布/下载文件数据,这对于初学者来说非常复杂,但现在是可能的,与回答这个问题时不同。

使用AJAX和jQuery进行HTML5文件上传


2
我已经尝试使用$.ajaxFileUpload(http://www.phpletter.com/Demo/AjaxFileUpload-Demo/)进行操作,如果您正在使用ASP.NET MVC,则可以按以下方式检索文件。
  public ActionResult UploadFiles(List<HttpPostedFileBase> uFile)

$.ajaxFileUpload的用法:

  $.ajaxFileUpload
(
    {
        url: "/Controller/UploadFiles", 
        secureuri: false,
        fileElementId: 'uFile', // the id of the file input controls holding the references to the files
        dataType: 'json',
        success: function (data, status) {
            // needs to handle the json return
        },
        error: function (data, status, e) {
            // same as error
        }
    }
)

对我来说,它非常有效。


2

通过 AJAX 请求上传文件是行不通的。必须使用完整的 HTTP 请求(POST)。通常使用的任何 jQuery 插件都会使用基于 Flash 或 Java 的小程序,或者使用隐藏的 iframe 技巧,在页面上隐藏一个真正的 iframe 来执行 POST 操作。


1

您可以使用$.ajax调用HTTP Post,无需手动操作文件内容转换为json。如果您的表单包含输入(type="file"),则有效载荷将在HTTP请求中。如果您能提供有关您的代码的更多详细信息,我可以发送代码示例。


我正在计划这个过程,只是在检查可能的方法。如果您有一些可用的工作代码,那将非常感激。谢谢。 - Flavio CF Oliveira
我的问题不在于服务器端,而是我不知道如何使用客户端脚本(如jquery)将文件发送到服务器。但我正在使用WebForms。 - Flavio CF Oliveira

-2
我强烈推荐使用valum的插件。它有很多支持,并且随着浏览器开始实现HTML5支持,如FileReader等,它也在不断更新。这使得发送“AJAX”文件请求变得越来越容易。

https://stackoverflow.com/search?q=valums

编辑:非常抱歉没有完全阅读你的问题 - 我看了标题,读了前几段,以为我知道你在寻找什么。结果最后一段有一个我没有注意到的排除性条款。


1
正如我所提到的,我想了解它是如何工作的过程! - Flavio CF Oliveira
抱歉,我以为你在问一个简洁的编程问题。请阅读源代码。 - John Strickler
非常感谢您的回复,但是我在最后一段提到了我不对组件感兴趣!我想学习的是过程! - Flavio CF Oliveira

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接