广告
返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >uniapp多图上传php接受不到怎么解决
  • 646
分享到

uniapp多图上传php接受不到怎么解决

2023-05-14 22:05:37 646人浏览 泡泡鱼
摘要

一、背景介绍随着互联网技术的不断发展,越来越多的WEB应用需要支持图片上传功能。而uniapp是一款目前非常流行的移动端开发框架,具有跨平台、高效、易用等特点。然而,当我们使用uniapp开发多图上传功能时,就会遇到一些问题:服务器无法正确

一、背景介绍

随着互联网技术的不断发展,越来越多的WEB应用需要支持图片上传功能。而uniapp是一款目前非常流行的移动端开发框架,具有跨平台、高效、易用等特点。然而,当我们使用uniapp开发多图上传功能时,就会遇到一些问题:服务器无法正确接收请求,无法获取到传递的图片信息。本文将探讨这个问题的可能原因和解决方案。

二、问题描述

我们使用uniapp提供的上传组件插件 uni-upload 开发多图上传功能,使用 PHP 后端代码来接收上传请求和保存图片信息。上传页面代码如下:

<template>
  <view class="container">
    <view class="uploadBtn" @tap="chooseImage">
      <image src="../../static/plus.png"></image>
    </view>
    <view class="image-list">
      <view class="image-item" v-for="(item, index) in fileList" :key="index">
        <image :src="item.path"></image>
        <view class="delete" @tap="deleteImage(index)">删除</view>
      </view>
    </view>
    <view class="submitBtn" @tap="submit">
      提交
    </view>
  </view>
</template>

<script>
  import uniUpload from "@/components/uni-upload/uni-upload.Vue";
  export default {
    components: { uniUpload },
    data() {
      return {
        fileList: [],
      };
    },
    methods: {
      chooseImage() {
        uni.chooseImage({
          count: 9,
          success: (res) => {
            this.fileList = [...this.fileList, ...res.tempFilePaths.map((path) => ({ path }))];
          },
        });
      },
      deleteImage(index) {
        this.fileList.splice(index, 1);
      },
      submit() {
        const fORMData = new FormData();
        this.fileList.forEach((item, index) => {
          formData.append(`file${index}`, item.path);
        });

        uni.request({
          method: "POST",
          url: "Http://localhost/upload.php",
          header: {
            "Content-Type": "multipart/form-data",
          },
          data: formData,
          success: (res) => {
            console.log("upload success", res.data);
          },
          fail: (error) => {
            console.log("upload fail", error);
          },
        });
      },
    },
  };
</script>

上传组件采用了 uni-upload 插件,通过 chooseImage 方法调用相册选择图片,将 tempFilePaths 中的图片路径填入 fileList 中,同时在submit 方法中将 fileList 中的图片路径上传到后端服务器。

在服务器端,我们使用PHP作为后端语言,代码如下:

<?php
  $upload_dir = "uploads/";
  if (!file_exists($upload_dir)) {
    mkdir($upload_dir);
  }
  foreach ($_FILES as $key => $file) {
    $tmp_name = $file["tmp_name"];
    $name = $file["name"];
    if (move_uploaded_file($tmp_name, $upload_dir . $name)) {
      echo "upload success ";
    } else {
      echo "upload fail ";
    }
  }
?>

在本地测试中发现,在提交图片后,后端服务器无法正确读取上传请求,不能正确地保存图片。下面将会会提出一些解决方案。

三、问题原因

根据错误提示,可能是文件上传方式不正确导致的。而 FormData 和 multipart/form-data 是现在用来表单实现文件上传的一种重要方式,但是如果不设置合适的请求头信息,服务器无法正确获取上传文件,这可能是造成这个问题的原因。

四、解决方案

  1. 更改请求头信息

在上传请求中增加头部内容 type 与 boundary ,其中 type 是发送请求时的 Content-Type, boundary 部分是分割数据的随机字符串

uni.request({
method: "POST",
url: "http://localhost/upload.php",
header: {

"Content-Type": "multipart/form-data; boundary=" + Math.random().toString().substr(2),

},
data: formData,
success: (res) => {

console.log("upload success", res.data);

},
fail: (error) => {

console.log("upload fail", error);

},
});

  1. 更改上传文件的 key 名称

在客户端,我们通过表单数据 append 的方式将文件列表拼装成 formData 。此时,每个文件的 key 默认是它在 formData 中的位置,即从 0 开始的递增数字。而服务器接收到的 key 可能是上传组件里面指定的 name 值,因此,在上传文件时可以为每个文件指定一个 key 名称,如下:

this.fileList.forEach((item, index) => {
formData.append("file" + index, item.path);
});

由于这里的 file 不同于上传组件的 name 属性值,因此在后端处理时也应对应修改。

foreach($_FILES as $file) {
$tmp_name = $file["tmp_name"];
$name = $file["name"];
if (move_uploaded_file($tmp_name, $upload_dir . $name)) {

echo "upload success ";

} else {

echo "upload fail ";

}
}

  1. 高版本 PHP 需要增加参数修改 php.ini

对于高版本 PHP,需要在 php.ini 文件中增加以下参数:

post_max_size=20M
upload_max_filesize=20M
max_execution_time=600
max_input_time=600

设置完毕后,需要重启 Apache 才能生效。

四、总结

本篇文章探讨了 uniapp 多图上传时传递图片信息无法被 PHP 接收的问题,通过修改请求头信息、更改上传文件的 key 名称和配置 php.ini 文件等方式,成功解决了问题。最后,建议 Web 开发者在使用 uniapp 进行移动端应用开发中,要注意对上传功能进行有效的测试,减少不必要的错误和损失。

以上就是uniapp多图上传php接受不到怎么解决的详细内容,更多请关注编程网其它相关文章!

--结束END--

本文标题: uniapp多图上传php接受不到怎么解决

本文链接: https://www.lsjlt.com/news/207602.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • uniapp多图上传php接受不到怎么解决
    一、背景介绍随着互联网技术的不断发展,越来越多的Web应用需要支持图片上传功能。而uniapp是一款目前非常流行的移动端开发框架,具有跨平台、高效、易用等特点。然而,当我们使用uniapp开发多图上传功能时,就会遇到一些问题:服务器无法正确...
    99+
    2023-05-14
  • uniapp上传图片后台接收不到怎么办
    在移动应用开发中,上传图片是一项非常基础的功能。而uniapp作为目前非常受欢迎的跨平台开发框架,也自然具备该功能。然而,有些开发者在使用uniapp开发上传图片功能时遇到了一个问题:上传图片后台接收不到。那么,这个问题该如何解决呢?一、问...
    99+
    2023-05-14
  • php上传图片不缓存怎么解决
    要实现不缓存上传的图片,可以使用以下方法之一:1. 在上传图片的表单中添加随机的参数:html...
    99+
    2023-10-18
    php
  • uniapp监听不到上拉事件怎么解决
    在uniapp中,我们可以通过监听页面滚动事件来实现上拉加载更多的功能。但有时候会发现即使页面已经滑动到底部,也无法监听到上拉事件,这该如何解决呢?首先要明确的是,uniapp是基于Vue框架开发的,因此我们可以借鉴Vue的思路来解决这个问...
    99+
    2023-05-14
  • php上传图片后不能显示是什么原因?怎么解决?
    PHP上传图片是Web开发中常用的功能,如果出现无法显示图片的问题,可能是以下几个原因造成的:图片上传路径错误在PHP代码中设置了图片上传路径,如果该路径设置错误,上传的图片将无法正常保存到服务器上,导致无法显示图片。因此,在编写PHP代码...
    99+
    2023-05-14
    php
  • php连接不上数据库怎么解决
    如果PHP无法连接到数据库,可能有以下几个原因和解决方法:1. 配置错误:检查PHP代码中的数据库连接字符串,确保用户名、密码、主机...
    99+
    2023-09-04
    php 数据库
  • SpringBoot文件上传临时目录找不到怎么解决
    这篇文章主要讲解了“SpringBoot文件上传临时目录找不到怎么解决”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“SpringBoot文件上传临时目录找不到怎么解决”吧!SpringBoo...
    99+
    2023-06-08
  • php接收不到小程序参数怎么解决
    本篇内容介绍了“php接收不到小程序参数怎么解决”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!php接收不到小程序参数的解决办法:1、打开相...
    99+
    2023-06-22
  • php文件名相同不上传问题怎么解决
    如果在上传过程中遇到了相同的文件名问题,可以考虑以下几种解决方案:1. 重命名文件:可以手动将其中一个文件进行重命名,例如添加一个后...
    99+
    2023-10-07
    php
  • 怎么解决php不能上传中文文件问题
    这篇文章主要介绍“怎么解决php不能上传中文文件问题”,在日常操作中,相信很多人在怎么解决php不能上传中文文件问题问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么解决php不能上传中文文件问题”的疑惑有所...
    99+
    2023-06-20
  • 织梦不能上传jpg格式的图片怎么办如何解决
    到根目录下找到Include文件夹,然后找到uploadsafe.inc.php文件,打开文件,找到第54行的代码 复制代码代码如下: if(in_array(strtolower(trim(${$_key.'...
    99+
    2022-06-12
    织梦 jpg格式
  • 怎么解决php ueditor上传图片出现未知错误的问题
    小编给大家分享一下怎么解决php ueditor上传图片出现未知错误的问题,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!php ueditor上传图片出现未知错误...
    99+
    2023-06-25
  • Angular开发组件数据不能实时更新到视图上怎么解决
    这篇文章主要介绍“Angular开发组件数据不能实时更新到视图上怎么解决”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Angular开发组件数据不能实时更新到视图上怎么解决”文章能帮助大家解决问题。...
    99+
    2023-07-04
  • 组件中多个el-upload存在导致上传图片失效问题怎么解决
    本篇内容介绍了“组件中多个el-upload存在导致上传图片失效问题怎么解决”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!组件中多个el-u...
    99+
    2023-07-05
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作