jquery里面用 $.ajax post文件

怎么在jquery里面用 $.ajax 上传文件。

阅读 8.4k
6 个回答

用 FormData,一个例子:

I'm pretty late for this but I was looking for an ajax based image uploading solution and the answer I was looking for was kinda scattered throughout this post. The solution I settled on involved the FormData object. I assembled a basic form of the code I put together. You can see it demonstrates how to add a custom field to the form with fd.append() as well as how to handle response data when the ajax request is done.

Upload html:

<!DOCTYPE html>
<html>
<head>
    <title>Image Upload Form</title>
    <script src="//code.jquery.com/jquery-1.9.1.js"></script>
    <script type="text/javascript">
        function submitForm() {
            console.log("submit event");
            var fd = new FormData(document.getElementById("fileinfo"));
            fd.append("label", "WEBUPLOAD");
            $.ajax({
              url: "upload.php",
              type: "POST",
              data: fd,
              enctype: 'multipart/form-data',
              processData: false,  // tell jQuery not to process the data
              contentType: false   // tell jQuery not to set contentType
            }).done(function( data ) {
                console.log("PHP Output:");
                console.log( data );
            });
            return false;
        }
    </script>
</head>

<body>
    <form method="post" id="fileinfo" name="fileinfo" onsubmit="return submitForm();">
        <label>Select a file:</label><br>
        <input type="file" name="file" required />
        <input type="submit" value="Upload" />
    </form>
    <div id="output"></div>
</body>
</html>

如果你除了上传文件外还有其他的信息通过表单传输,那么你可以做两个表单,一个用来放其它的信息,另一个表单专门使用ajax上传文件。然后用事件控制表单的提交

要用二进制流

$(selector).get(0).flies[0] 

formData上传文件

这个的话 利用FormData来简单做。只是这个特性并不支持IE低版本。慎用。

AJAX 在一些低版本的 IE 上不支持文件上传,可以考虑使用 iframe 上传文件!

参考:https://github.com/malsup/form

通过这种方式,文件域被提交到一个 iframe 里!

ajax不支持文件上传,你需要使用FileReader配合FormData来实现无刷新上传!

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏