相关疑难解决方法(0)

jQuery Ajax文件上传

我可以使用以下jQuery代码使用Ajax请求的post方法执行文件上载吗?

$.ajax({
    type: "POST",
    timeout: 50000,
    url: url,
    data: dataString,
    success: function (data) {
        alert('success');
        return false;
    }
});
Run Code Online (Sandbox Code Playgroud)

如果可能,我是否需要填写"数据"部分?这是正确的方法吗?我只将文件发布到服务器端.

我一直在谷歌搜索,但我发现是一个插件,而在我的计划中,我不想使用它.至少目前.

javascript ajax jquery post file-upload

722
推荐指数
22
解决办法
132万
查看次数

使用jQuery.ajax发送multipart/formdata

我使用jQuery的ajax函数将文件发送到服务器端PHP脚本时遇到问题.可以获取文件列表$('#fileinput').attr('files')但是如何将此数据发送到服务器?使用文件输入时$_POST,服务器端php脚本上的结果array()为0(NULL).

我知道这是可能的(虽然我到目前为止还没有找到任何jQuery解决方案,只有Prototye代码(http://webreflection.blogspot.com/2009/03/safari-4-multiple-upload-with-progress.html) ).

这似乎是相对较新的,所以请不要通过XHR/Ajax提及文件上传,因为它肯定有用.

我需要Safari 5中的功能,FF和Chrome会很好但不是必需的.

我现在的代码是:

$.ajax({
    url: 'php/upload.php',
    data: $('#file').attr('files'),
    cache: false,
    contentType: 'multipart/form-data',
    processData: false,
    type: 'POST',
    success: function(data){
        alert(data);
    }
});
Run Code Online (Sandbox Code Playgroud)

ajax jquery file-upload multipartform-data form-data

545
推荐指数
8
解决办法
83万
查看次数

如何在jQuery中使用Ajax请求发送FormData对象?

XMLHttpRequest的2级标准(还是工作草案)定义FormData的接口.此接口允许将File对象附加到XHR请求(Ajax请求).

顺便说一句,这是一个新功能 - 在过去,使用了"隐藏iframe技巧"(在我的另一个问题中阅读).

这就是它的工作原理(例子):

var xhr = new XMLHttpRequest(),
    fd = new FormData();

fd.append( 'file', input.files[0] );
xhr.open( 'POST', 'http://example.com/script.php', true );
xhr.onreadystatechange = handler;
xhr.send( fd );
Run Code Online (Sandbox Code Playgroud)

where input是一个<input type="file">字段,handler是Ajax请求的成功处理程序.

这在所有浏览器中都很漂亮(除了IE之外).

现在,我想使这个功能与jQuery一起使用.我试过这个:

var fd = new FormData();    
fd.append( 'file', input.files[0] );

$.post( 'http://example.com/script.php', fd, handler );
Run Code Online (Sandbox Code Playgroud)

不幸的是,这不起作用(抛出"非法调用"错误 - 截图在这里).我假设jQuery需要一个表示form-field-names/values的简单键值对象,而FormData我传入的实例显然是不兼容的.

现在,由于可以将FormData实例传入xhr.send(),我希望它也可以使它与jQuery一起使用.


更新:

我在jQuery的Bug Tracker上创建了一个"功能票".它在这里:http://bugs.jquery.com/ticket/9995

我被建议使用"Ajax prefilter"...... …

javascript ajax jquery html5 multipartform-data

468
推荐指数
6
解决办法
73万
查看次数

使用jQuery上传文件上传进度条

我正在尝试在我的项目中实现AJAX文件上传功能.我正在使用jQuery; 我的代码使用AJAX提交数据.我还想实现一个文件上传进度条.我怎样才能做到这一点?有没有办法计算已经上传了多少,以便我可以计算上传的百分比并创建一个进度条?

jquery file-upload progress-bar

145
推荐指数
8
解决办法
31万
查看次数

jQuery AJAX文件上传PHP

我想在我的Intranet页面上实现一个简单的文件上传,尽可能小的设置.

这是我的HTML部分:

<input id="sortpicture" type="file" name="sortpic" />
<button id="upload">Upload</button>
Run Code Online (Sandbox Code Playgroud)

这是我的JS jquery脚本:

$("#upload").on("click", function() {
    var file_data = $("#sortpicture").prop("files")[0];   
    var form_data = new FormData();
    form_data.append("file", file_data);
    alert(form_data);
    $.ajax({
        url: "/uploads",
        dataType: 'script',
        cache: false,
        contentType: false,
        processData: false,
        data: form_data,                         
        type: 'post',
        success: function(){
            alert("works"); 
        }
    });
});
Run Code Online (Sandbox Code Playgroud)

在网站的根目录中有一个名为"uploads"的文件夹,具有"users"和"IIS_users"的更改权限.

当我选择具有文件格式的文件并按下上传按钮时,第一个警报返回"[object FormData]".第二个警报没有被调用,"uploads"文件夹也是空的!?

有人可以帮助我找出错误吗?

下一步应该是,用服务器端生成的名称重命名文件.也许有人可以给我一个解决方案.

javascript php ajax upload jquery

142
推荐指数
3
解决办法
32万
查看次数

javascript如何上传blob?

我在这个结构中有一个blob数据:

Blob {type: "audio/wav", size: 655404, slice: function}
size: 655404
type: "audio/wav"
__proto__: Blob
Run Code Online (Sandbox Code Playgroud)

它实际上是使用最近的Chrome getUerMedia()Recorder.js记录的声音数据

如何使用jquery的post方法将此blob上传到服务器?我没试过就试过这个:

   $.post('http://localhost/upload.php', { fname: "test.wav", data: soundBlob }, 
    function(responseText) {
           console.log(responseText);
    });
Run Code Online (Sandbox Code Playgroud)

javascript jquery html5

95
推荐指数
5
解决办法
13万
查看次数

获取JQuery ajax请求进展的最简洁方法是什么?

在普通的javascript中非常简单:只需将回调附加到 {XMLHTTPRequest}.onprogress

var xhr = new XMLHttpRequest();

xhr.onprogress = function(e){
    if (e.lengthComputable)
        var percent = (e.loaded / e.total) * 100;
};

xhr.open('GET', 'http://www...', true);
xhr.onreadystatechange = function() {
    ...
};
xhr.send(null);
Run Code Online (Sandbox Code Playgroud)

但我正在做一个用JQuery($.get()$.ajax())下载html数据的ajax网站,我想知道哪个是获取请求进度的最佳方式,以便用一点进度条显示它,但奇怪的是,我不是在JQuery文档中找到任何有用的东西......

javascript ajax jquery xmlhttprequest

90
推荐指数
4
解决办法
10万
查看次数

使用带有AJAX和jQuery的HTML5文件上传

不可否认,Stack Overflow上存在类似的问题,但似乎没有完全符合我的要求.

以下是我要做的事情:

  • 上传整个数据形式,其中一个是单个文件
  • 使用Codeigniter的文件上传库

直到这里,一切都很好.数据在我需要时进入我的数据库.但我也想通过AJAX帖子提交我的表格:

  • 使用原生HTML5文件API,而不是Flash或iframe解决方案
  • 优选地与低级.ajax()jQuery方法接口

我想我可以想象如何通过使用纯javascript在字段的值更改时自动上传文件来实现此目的,但我宁愿一下子在jQuery中提交所有内容.我认为通过查询字符串是不可能的,因为我需要传递整个文件对象,但我现在有点迷失在这一点上做什么.

这可以实现吗?

javascript ajax jquery html5 file-upload

82
推荐指数
2
解决办法
18万
查看次数

如何使用jquery序列化进行文件上传

所以我有一个表单,我使用jquery序列化函数通过ajax提交表单

        serialized = $(Forms).serialize();

        $.ajax({

        type        : "POST",
        cache   : false,
        url     : "blah",
        data        : serialized,
        success: function(data) {

        }
Run Code Online (Sandbox Code Playgroud)

但是如果表单有一个<input type="file">字段怎么办....如何使用这个ajax序列化方法将文件传递给表单...打印$ _FILES不输出任何内容

php ajax jquery serialization file-upload

72
推荐指数
7
解决办法
18万
查看次数

jQuery上传进度和AJAX文件上传

好像我没有清楚地传达我的问题.我需要发送一个文件(使用AJAX),我需要使用Nginx HttpUploadProgressModule获取文件的上传进度.我需要一个很好的解决方案.我尝试过使用jquery.uploadprogress插件,但我发现自己不得不重写它以使其在所有浏览器中工作并使用AJAX发送文件.

我只需要执行此操作的代码,它需要在所有主流浏览器(Chrome,Safari,FireFox和IE)中运行.如果我能得到一个可以处理多个文件上传的解决方案,那就更好了.

我正在使用jquery.uploadprogress插件从NginxHttpUploadProgressModule获取文件的上传进度.这是一个facebook应用程序的iframe内部.它适用于Firefox,但它在chrome/safari中失败了.

当我打开控制台时,我得到了这个.

Uncaught ReferenceError: progressFrame is not defined
jquery.uploadprogress.js:80
Run Code Online (Sandbox Code Playgroud)

知道如何解决这个问题吗?

我想在完成后使用AJAX发送文件.我该如何实现?

编辑:
我很快就需要这个,这很重要,所以我要在这个问题上给予100点奖励.第一个回答它的人将得到100分.

编辑2:
Jake33帮我解决了第一个问题.第一个给出如何使用ajax发送文件的响应的人将获得100分.

ajax jquery file-upload nginx

69
推荐指数
2
解决办法
14万
查看次数