• PHP+AJAX实现异步上传文件


    文件上传功能是动态Web应用程序的常用功能。通常,php采用提交表单并刷新页面的方法上传文件。但是,如果您想提供更好的用户体验,则可以使用jQuery和Ajax来上传文件而无需刷新页面。 

    上传文件的最简单方法是使用FormData。它使用键/值对发送XMLHttpRequest请求。最初,FormData用于发送键/值对中的所有表单数据,但也可以用于发送键控数据。FormData发送的数据格式与表单的Submit()提交方法中使用的格式相同。如果我们在表单的编码中使用multipart/form-data,它也会发送上传数据。

    本文中将向您展示如何使用FormData对象和PHP提交表单数据上传文件。

    创建一个HTML表单

    在你的网站根目录创建一个文件夹命名为AJAX-upload,然后在该文件夹中创建一个index.html页面。页面代码如下:

    1. <!DOCTYPE html>
    2. <html>
    3. <head>
    4. <meta charset="UTF-8" />
    5. <title>AJAX fiel Uploading</title>
    6. </head>
    7. <body>
    8. <p>Image uploader</p>
    9. <input type="file" id="fileAjax" name="fileAjax" /><br /><br />
    10. <button id="upload">Upload</button>
    11. <p id="status"></p>
    12. <script type="text/javascript" src="imageUpload.js"></script>
    13. </body>
    14. </html>

    创建一个AJAX脚本

    编写JavaScript代码,这段代码进行Ajax调用并向服务器端处理响应。在AJAX-upload文件夹中创建一个js文件并命名为imageUpload.js,将一下代码复制到该文件中。

    1. $('#upload').on('click', function() {
    2. var file_data = $('#sortpicture').prop('files')[0];
    3. var form_data = new FormData();
    4. form_data.append('file', file_data);
    5. alert(form_data);
    6. $.ajax({
    7. url: 'upload.php', // point to server-side PHP script
    8. dataType: 'text', // what to expect back from the PHP script, if anything
    9. cache: false,
    10. contentType: false,
    11. processData: false,
    12. data: form_data,
    13. type: 'post',
    14. success: function(php_script_response){
    15. alert(php_script_response); // display response from the PHP script, if any
    16. }
    17. });
    18. });

    上面代码发送文件到服务器,服务器脚本upload.php将作出响应。

    创建服务器端PHP脚本以接受来自AJAX请求的数据

    在此阶段,我们已经完成了将文件内容发送到服务器端的工作。现在创建一个文件upload.php ,在该文件中 ,我们必须编写PHP代码,该文件将文件上传到服务器上。

    1. header("Content-Type: text/html;charset=utf-8");
    2. if (!file_exists('./Upload')) {
    3. mkdir('uploads', 0777);
    4. }
    5. $MyFilePath="./Upload/";
    6. $Extensions= array("jpeg","jpg","png");
    7. $MaxFileSize=2;
    8. $Time=time();
    9. if(isset($_FILES['myFile'])){
    10. $file_name = $_FILES['myFile']['name'];
    11. $file_size = $_FILES['myFile']['size'];
    12. $file_tmp = $_FILES['myFile']['tmp_name'];
    13. $file_type = $_FILES['myFile']['type'];
    14. $name_arr = explode('.',$_FILES['myFile']['name']);
    15. $file_ext=strtolower(end($name_arr));
    16. if(in_array($file_ext,$Extensions)=== false){
    17. echo "400ExeErr";
    18. }
    19. if($file_size > ($MaxFileSize*1024*1024)) {
    20. echo "400FileSizeErr";
    21. }
    22. if(in_array($file_ext,$Extensions)=== true&&$file_size < ($MaxFileSize*1024*1024)){
    23. $NewFileName=$Time."_".$file_name;
    24. $AllFilePath=$MyFilePath.$NewFileName;
    25. move_uploaded_file($file_tmp,$AllFilePath);
    26. echo $AllFilePath;
    27. }
    28. }
    29. ?>

    上面的PHP代码首先检查'uploads'目录。如果该目录不存在,那么它将创建该目录并将发送过来的文件上传到该文件夹​​中。

    以上是本文的全部类容,感谢阅读,希望能帮到大家。更多教程请访问码农之家   

  • 相关阅读:
    IEEE Trans. On Robotics ​“受护理人员启发的双臂机器人穿衣”研究工作
    QT 常用知识
    JSP request对象:获取客户端的请求信息
    【Linux系列】vmware虚拟机网络配置详解
    多媒体数据处理实验2:PCA
    cube-studio 部署过程
    DeviceIoControl获取硬盘信息
    IC工程师入门必学,Verilog零基础入门教程
    使用frp进行内网穿透
    高级数据结构—线段树(一)
  • 原文地址:https://blog.csdn.net/wuxiaopengnihao1/article/details/126502209