jQuery+PHP实现图片上传并提交功能

图片上传思路:通过ajax实现图片上传,然后把PHP返回的图片地址,加入到隐藏字段中,最后通过表单提交给后台PHP,代码如下。

HTML代码 zimg.html文件:

  1. <!DOCTYPE html>
  2. <html >
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <title>自定义上传图片</title>
  7. </head>
  8. <body>
  9. <form action="a.php?action=2" method="post">
  10. <span>
  11. 上传图片
  12. </span>
  13. <span>
  14. <input type="file" name="img_url" accept=".jpg, .gif, .jpeg, .bmp, .png"/>
  15. <a onclick="UpLoadImg()">上传</a>
  16. <input type="hidden" name="url_data"/>
  17. </span>
  18. <br>
  19. <span>
  20. <input type="submit" value="提交">
  21. </span>
  22. </form>
  23. </body>
  24. <!-- 引入jq -->
  25. <script src="https://code.jquery.com/jquery-3.0.0.min.js"></script>
  26. <script>
  27. function UpLoadImg(){
  28. //获取上传文件
  29. var formData = new FormData();
  30. formData.append('img_url', $('#img_url')[0].files[0]);
  31. console.log(formData)
  32. //提交后台处理
  33. $.ajax({
  34. url: 'a.php?action=1',
  35. type: 'POST',
  36. cache: false,
  37. data: formData,
  38. dataType: "JSON",
  39. processData: false,
  40. contentType: false
  41. }).done(function(res) {
  42. console.log(res.url);
  43. if(res.status == 1){
  44. //赋值给字段
  45. $('#url_data').val(res.url);
  46. alert(res.msg)
  47. }else{
  48. alert(res.msg)
  49. }
  50. }).fail(function(res) {
  51. });
  52. }
  53. </script>
  54. </html>

后台PHP代码 a.php:

  1. <?php
  2. if($_GET['action'] == 1){//上传图片接口
  3. $img = $_FILES['img_url'];
  4. //获取上图片后缀
  5. $type = strstr($img['name'], '.');
  6. $rand = rand(1000, 9999);
  7. //命名图片名称
  8. $pics = date("YmdHis") . $rand . $type;
  9. //上传路径
  10. $pic_path = "img/". $pics;
  11. //移动到指定目录,上传图片
  12. $res = move_uploaded_file($img['tmp_name'], $pic_path);
  13. if($res){
  14. echo json_encode(['status' => 1, 'msg' => '上传成功','url' => $pic_path]);exit;
  15. }else{
  16. echo json_encode(['status' => 0, 'msg' => '上传失败']);exit;
  17. }
  18. }elseif($_GET['action'] == 2){//提交文件表单
  19. echo '<pre>';
  20. var_dump($_POST);
  21. }

最后实现效果如下:

jQuery+PHP实现图片上传并提交功能

ps:js代码是使用jQuery的写法,需引入jQuery代码库文件。