首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

使用ajax和php上传文件

使用AJAX和PHP上传文件的方法如下:

  1. 创建HTML表单:
代码语言:html
复制
<form id="upload_form" enctype="multipart/form-data">
 <input type="file" name="fileToUpload" id="fileToUpload">
 <button type="submit">上传文件</button>
</form>
  1. 使用JavaScript和AJAX发送文件:
代码语言:javascript
复制
document.getElementById("upload_form").addEventListener("submit", function(e) {
  e.preventDefault();
  var formData = new FormData(this);
  var xhr = new XMLHttpRequest();
  xhr.open("POST", "upload.php", true);
  xhr.onreadystatechange = function() {
    if (xhr.readyState == 4 && xhr.status == 200) {
      alert(xhr.responseText);
    }
  };
  xhr.send(formData);
});
  1. 创建PHP文件处理程序(upload.php):
代码语言:php
复制
<?php
$target_dir = "uploads/";
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
$uploadOk = 1;
$imageFileType = strtolower(pathinfo($target_file,PATHINFO_EXTENSION));

// Check if image file is a actual image or fake image
if(isset($_POST["submit"])) {
  $check = getimagesize($_FILES["fileToUpload"]["tmp_name"]);
  if($check !== false) {
    echo "文件是一张图片 - " . $check["mime"] . ".";
    $uploadOk = 1;
  } else {
    echo "文件不是一张图片。";
    $uploadOk = 0;
  }
}

// Check if file already exists
if (file_exists($target_file)) {
  echo "文件已经存在。";
  $uploadOk = 0;
}

// Allow certain file formats
if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"
&& $imageFileType != "gif" ) {
  echo "非法的文件格式。";
  $uploadOk = 0;
}

// Check if $uploadOk is set to 0 by an error
if ($uploadOk == 0) {
  echo "文件上传失败。";
// if everything is ok, try to upload file
} else {
  if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
    echo "文件 ". basename( $_FILES["fileToUpload"]["name"]). " 已经上传成功。";
  } else {
    echo "文件上传出现错误。";
  }
}
?>

这个方法将使用AJAX和PHP上传文件,并且可以在不刷新页面的情况下上传文件。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

PHP使用HTML5 FileApi实现Ajax上传文件功能示例

本文实例讲述了PHP使用HTML5 FileApi实现Ajax上传文件功能。...分享给大家供大家参考,具体如下: FileApi是HTML5的一个新特性,有了这个新特性,js就可以读取本地的文件了,然后实现真正的Ajax上传文件了,而不是iframe方法,下面会介绍api的使用,以及实现...Ajax上传文件: FileApi使用 定义上传控件: <input type="file" name="pic" onchange="selfile();" / 当上传文件后,就会触发selfile...11-fileApi.html文件: 页面中主要有一个上传文件按钮,如果有文件上传,onchange事件被响应,selfile函数调用,然后js读取上传文件、把文件大小显示在页面中、创建FormData...对象并添加数据、ajax上传文件、预览上传文件效果。

1.3K41

PHP+iframe模拟Ajax上传文件功能示例

本文实例讲述了PHP+iframe模拟Ajax上传文件功能。...分享给大家供大家参考,具体如下: 在xmlhttprequest level 1中,Ajax是不能够上传文件的,因为js不能操作本地文件,但是市场上有一些Ajax异步上传文件的插件,是怎么完成的呢?...答案:可以使用iframe模拟Ajax上传文件。接下来博主将使用iframe来模拟Ajax上传文件。 首先看一下效果图: ? 文件结构图: ?...09-iframe-upload.html文件: 页面中有一个表单,表单中有一个上传文件按钮提交按钮,点击提交按钮执行ajaxUpload函数,然后动态创建iframe标签,让其不可见,最后设置表单的...php /** * iframe模拟Ajax上传文件 * @author webbc */ sleep(3);//延时3秒 if(empty($_FILES)){ echo 'no file'

1.5K61

Ajax如何实现文件上传

(新手编程1001问_0003) Q:Ajax如何实现文件上传? A:这是个好问题。...因为一般情况下,通过表单提交实现文件上传是没有问题的,只需要将表单的enctype属性设置为multipart/form-data即可。... 但是,如果表单数据需要验证,就希望通过JS来完成,如此一来也可能希望表单数据提交一并在JS中完成,特别是,如果需要立即获取提交后的结果反馈,那么通过Ajax来实现将是最好的选择。...它的定义创建很简单: var formData = new FormData(); 然后,就可以使用append()方法向formData 中添加数据了。...(JS及其Ajax代码) ? (服务端的代码以.NET MVC为例) 有兴趣的同学,复制以上代码,测试一下,多文件上传一招搞定哦!

3K20

php+ajax实现文件切割上传功能示例

本文实例讲述了php+ajax实现文件切割上传功能。分享给大家供大家参考,具体如下: html5中的File对象继承Blob二进制对象,Blob提供了一个slice函数,可以用来切割文件数据。 <!...FormData对象中 fd.append("file", tmpfile); var xhr = new XMLHttpRequest(); //这里使用同步...xhr.open("post", "upfile.php", false); //上传进度 console.log(Math.round( (CutStart + tmpfile.size...']), FILE_APPEND); } 更多关于PHP相关内容可查看本站专题:《PHP+ajax技巧与应用小结》、《PHP网络编程技巧总结》、《php字符串(string)用法总结》、《php+mysql...数据库操作入门教程》及《php常见数据库操作技巧汇总》 希望本文所述对大家PHP程序设计有所帮助。

67951

PHP文件上传下载(二)

文件下载文件下载是将服务器上的文件下载到本地计算机的过程。在 PHP 中,文件下载可以通过 PHP 的 readfile 函数 Content-Disposition响应头来实现。...readfile 函数PHP 中的 readfile 函数可以用于将文件内容输出到浏览器。...然后,我们使用 basename 函数获取文件名,并将其设置为响应头的 Content-Disposition 属性中的值。最后,我们输出文件内容。...以下是一些常见的安全措施:检查用户是否有下载文件的权限。检查要下载的文件是否存在,并验证文件路径是否有效。使用安全的文件名,例如不包含特殊字符路径信息。...限制文件的下载速度,以避免攻击者通过下载大量文件来占用带宽。

73020

PHP文件上传下载(一)

文件上传文件上传是将本地计算机中的文件上传到服务器上的过程。在 PHP 中,文件上传可以通过 HTML 的表单 PHP 的 $_FILES 超全局变量来实现。...在提交表单时,选中的文件将被上传到指定的 PHP 文件中。$_FILES 超全局变量PHP 中,文件上传的相关信息存储在 $_FILES 超全局变量中。...";}在上面的示例中,我们首先检查上传文件是否有错误。如果没有错误,我们从 $_FILES 中获取上传文件的名称临时文件名。...为了避免这种情况,我们需要采取一些措施来确保上传文件是安全的。以下是一些常见的安全措施:限制上传文件的类型大小。对上传文件进行验证,例如检查文件的类型、大小、扩展名等。...使用安全的文件名,例如使用随机字符串或使用时间戳作为文件名。将上传文件存储在安全的目录中,例如不要将文件存储在 Web 服务器的根目录中。

52720

MVC5:使用AjaxHTML5实现文件上传功能

引言 在实际编程中,经常遇到实现文件上传并显示上传进度的功能,基于此目的,本文就为大家介绍不使用flash 或任何上传文件的插件来实现带有进度显示的文件上传功能。...,也可以利用客户端来验证上传文件的类型大小是否规范。...跨资源共享请求 这些新特性都使得AjaxHTML5很好的协作,让文件上传变得非常简单,不再需要使用Flash Player、外部插件或html的标签就可以完成,根据服务器端就可以显示上传进度条...编写代码 如何上传单个文件并显示上传进度? 首先需要做的是创建简单的View : 定义一个表单,由输入文件元素提交按钮组成。 使用Bootstrap 进度条显示进度。...progressHandlingFunction方法会提供检验上传文件Size 是否可计算,使用e.loadede.total计算出已上传百分之多少的数据。

4.2K101
领券