添加图片时出现 undefined,F12 查看报 500 错误

《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
讨论数量: 11

500 内部服务器错误 你代码写的有问题 你把添加图片的代码 贴出来

5年前 评论

可以到到开发者工具的 network 标签,找到状态码为 500 的记录,看看具体的报错信息。

5年前 评论

<?php

namespace App\Http\Controllers;

use App\Http\Controllers\Controller;
use App\Http\Requests\TopicRequest;
use App\Models\Topic;
use App\Models\Category;
use Auth;
use App\Handlers\ImageUploadHandler;

class TopicsController extends Controller
{
public function __construct()
{
$this->middleware('auth', ['except' => ['index', 'show']]);
}

public function index()
{
    //防止N+1的情况发生,所以我们采用预加载的方式处理
    $topics = Topic::with('user', 'category')->paginate(10);
    return view('topics.index', compact('topics'));
}

public function show(Topic $topic)
{
    return view('topics.show', compact('topic'));
}

public function create(Topic $topic)
{
    $categories = category::all();
    return view('topics.create_and_edit', compact('topic','categories'));
}

public function store(TopicRequest $request,Topic $topic)
{
    $topic->fill($request->all());
    $topic->user_id = Auth::id();
    $topic->save();
    return redirect()->route('topics.show', $topic->id)->with('success', '成功创建话题');
}

public function uploadImage(Request $request, ImageUploadHandler $uploader)
{
    // 初始化返回数据,默认是失败的
    $data = [
        'success'   => false,
        'msg'       => '上传失败!',
        'file_path' => ''
    ];
    // 判断是否有上传文件,并赋值给 $file
    if ($file = $request->upload_file) {
        // 保存图片到本地
        $result = $uploader->save($request->upload_file, 'topics', \Auth::id(), 1024);
        // 图片保存成功的话
        if ($result) {
            $data['file_path'] = $result['path'];
            $data['msg']       = "上传成功!";
            $data['success']   = true;
        }
    }
    return $data;
}

}

5年前 评论

我之前也是这种错误,仔细检查了代码没找到问题,没办法,将教程的代码复制粘贴,问题解决。。。
你也复制粘贴再试一下

5年前 评论

我之前也是这种错误,仔细检查了代码没找到问题,没办法,将教程的代码复制粘贴,问题解决。。。
你也复制粘贴再试一下

5年前 评论
任飘渺

Route::post('upload_image', 'TopicsController@uploadImage')->name('topics.upload_image');

路由写错了吧

5年前 评论
vmarsed 1年前

这个问题不好追踪,只能把相关代码都检查一遍。我遇到这个问题,检查代码发现,原因是前端页面,JavaScript代码里面,我把 params 写成了 param

5年前 评论
yoyomasky

打开debug后再点undefined后 应该会有错误出来的
遇到这个错误 我估计是你上传的图片过大超过了PHP ini文件里的限制
限制下上传图片的大小就好.

4年前 评论

这节有两处错误, 改了就正常了

  1. 路由 Route::post('upload_image', 'TopicsController@uploadImage')->name('topics.upload_image'); 改为 Route::post('upload_image', 'TopicsController@upload_image')->name('topics.upload_image');
  2. 前端的 create_and_edit.blade.php url 中的引号有问题
    <script>
     $(document).ready(function(){
       var editor = new Simditor({
         textarea: $('#editor'),
         upload:{
           url: "{{ route('topics.upload_image') }}",//两个单引号要出问题吧? // 处理上传图片的 URL
           // params —— 表单提交的参数,Laravel 的 POST 请求必须带防止 CSRF 跨站请求伪造的 _token 参数;
           params:{
             _token: '{{ csrf_token() }}'
           },
           filekey: 'upload_file', // fileKey —— 是服务器端获取图片的键值,我们设置为 upload_file;
           connectionCount: 3, // connectionCount —— 最多只能同时上传 3 张图片;
           leaveConfirm: '文件上传中, 关闭此页面将取消上传' // leaveConfirm —— 上传过程中,用户关闭页面时的提醒。
         },
         pasteImage: true, //设定是否支持图片黏贴上传,这里我们使用 true 进行开启;
       })
     });
    </script>
1年前 评论
vmarsed (作者) 1年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!