Javascript Laravel-删除表单中上载的文件

Javascript Laravel-删除表单中上载的文件,javascript,laravel,Javascript,Laravel,这是我在这里的第一条信息,如果以前有人问过这个问题,我表示歉意 还有,对不起我的英语,我是法国人 我正在构建一个Laravel应用程序,在我的一个表单中,我允许用户上传文件,但这不是必需的 然而,一旦上传,就无法在我的编辑或上传路线中删除它 假设一个用户上传了一个文件并改变了主意,他们怎么能删除它呢 以下是表单的屏幕截图: 这是我的控制器: public function update(Request $request, $id) { $this->validate($reque

这是我在这里的第一条信息,如果以前有人问过这个问题,我表示歉意

还有,对不起我的英语,我是法国人

我正在构建一个Laravel应用程序,在我的一个表单中,我允许用户上传文件,但这不是必需的

然而,一旦上传,就无法在我的编辑或上传路线中删除它

假设一个用户上传了一个文件并改变了主意,他们怎么能删除它呢

以下是表单的屏幕截图:

这是我的控制器:

public function update(Request $request, $id)
{
    $this->validate($request, [
        'title' => 'required|string',
        'timing' => 'required',
        'file' => 'file',
        'lesson_id' => 'required',
        'video' => 'required',
        'description' => 'required'
    ]);

    $lecture = Lecture::findOrFail($id);

    $lecture->title = $request['title'];
    $lecture->timing = $request['timing'];
    $lecture->lesson_id = $request['lesson_id'];
    $lecture->video = $request['video'];
    $lecture->description = $request['description'];

    // Fichier
    $file = $request->file('file');

    if ($request->hasFile('file')) {
        $fileName = $file->getClientOriginalName();
    $fileExtension = $file->getClientOriginalExtension();

    $destinationPath = public_path('chapitres-files');

    $file->move($destinationPath, $fileName);
    $lecture->file = 'chapitres-files/' . $fileName;
    }
那么,有人能解释一下在我的控制器、视图文件和web.php中到底要做什么吗

多谢各位


加斯托诺

您有两个主要场景要涵盖:

  • 用户将文件添加到表单中,但决定在上载之前将其删除
  • 一个用户已经上传了一个文件,现在想要删除它

  • 场景1:从表单对象中删除文件

    我将把这个问题作为一个起点,因为我不是Javascript专家


    场景2:从存储中删除文件

    如注释中所述,在这种情况下,您将希望作为单独的操作而不是作为编辑/更新代码的一部分删除该文件

    这使你的破坏性行动与建设性行动分开

    我的做法是:

  • 为文件(
    FileController
    )创建一个API控制器,其上有一个
    destroy
    方法
  • 为文件创建API路由(
    API/files/destroy/{file\u id}
  • 使用javascript向API路由发出AJAX请求,请求中包含要删除的文件的标识符

  • 注意:我还建议在“删除”按钮上添加一个确认步骤(如模式或警报),以使用户确认他们确实想要删除文件

    ,因此如果您想在上传文件之前从表单中删除文件,则需要使用客户端代码来执行此操作。您可能希望在问题上添加
    javascript
    标志,以便它出现在正确的提要中。另外,你的英语真的很好,不需要道歉;)您是从
    请求数组中删除还是从视图中删除?
    我建议创建一个新的路由和控制器,专门用于删除映像,而不是尝试在
    更新
    方法中添加其他逻辑来删除映像。谢谢大家。我想将其从更新或编辑页面的视图中删除@Rwd:所以我可以在一个表单中创建一个表单,并且在同一页面中有两个控制器?对不起,我很困惑。。。无论如何谢谢你!谢谢大家。我将尝试探索您的解决方案,然后再与您联系。再次感谢。