Как импортировать файл, используя laravel bootstrap модальный? - PullRequest
0 голосов
/ 05 февраля 2020

Я хочу загрузить файл из модального laravel bootstrap, а затем прочитать файл построчно. Вот код файла представления блейда:

@extends('index')
@section('title', 'Labs')

@section('content')
<html lang="en">
<head>
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css">
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js"></script>
</head>
<body>

<div class="container">
    <!-- Trigger the modal with a button -->
    <button type="button" class="btn btn-info btn-sm" data-toggle="modal" data-target="#importModal">Import Lab File</button>
    <table class="table mt-3">
        <thead>
            <tr>
            <th scope="col">DateTimeCollected</th>
            <th scope="col">SpecimenNo</th>
            </tr>
        </thead>
        <tbody>
            @foreach ($labs as $lab)
            <tr>
                <td>{{ $lab['dateTimeCollected'] }}</td>
                <td>{{ $lab['specimenNo'] }}</td>
                <td><a href="/labs/{{ $lab->id }}/edit" class="btn btn-sm btn-success">Edit</a></td>
            </tr>
            @endforeach  
        </tbody>
    </table>
    @if(!empty(Session::get('success')))
        <div class="alert alert-success"> {{ Session::get('success') }}</div>
    @endif
    @if(!empty(Session::get('error')))
        <div class="alert alert-danger"> {{ Session::get('error') }}</div>
    @endif

    <!-- Modal -->
    <div id="importModal" class="modal fade">
        <div class="modal-dialog">
            <div class="modal-content">
                <div class="modal-header">
                    <h2 class="modal-title">Import a Lab File</h2>
                    <button type="button" class="close" data-dismiss="modal">&times;</button>
                </div>
                <div class="modal-body">
                    <p>Choose a file to upload</p>
                    <p class="text-secondary"><small>Or click the Cancel button or X</small></p>
                </div>
                @if ($message = Session::get('success'))
                    <div class="alert alert-success alert-block">
                        <button type="button" class="close" data-dismiss="alert">×</button>
                        <strong>{{ $message }}</strong>
                    </div>
                @endif

                @if (count($errors) > 0)
                    <div class="alert alert-danger">
                        <strong>Whoops!</strong> There were some problems with your input.
                        <ul>
                            @foreach ($errors->all() as $error)
                                <li>{{ $error }}</li>
                            @endforeach
                        </ul>
                    </div>
                @endif

                <!--<form action="{{ route('file.upload.post') }}" method="POST" enctype="multipart/form-data">-->
                <form action="import.php" method="POST" enctype="multipart/form-data">
                    @csrf
                    <div class="row">
                        <div class="col-md-6">
                            <input type="file" name="file" class="form-control">
                        </div>
                        <div class="col-md-6">
                            <button type="submit" class="btn btn-success" name="Import" data-loading-text="uploading...">Upload</button>
                        </div>
                    </div>
                </form>
                <div class="modal-footer">
                    <button type="button" class="btn btn-secondary" data-dismiss="modal">Cancel</button>
                    <!--<button type="button" class="btn btn-primary">Import</button>-->
                </div>
            </div>
        </div>
    </div>
</div>
</body>
</html>
@endsection

А вот как это выглядит при нажатии кнопки «Загрузить файл лаборатории» и выборе файла с помощью кнопки «Выбрать файл»:

enter image description here

Проблема в том, что, когда я нажимаю зеленую кнопку «Загрузить», предполагается, что файл загружается, а затем выводит содержимое файла построчно. Вместо этого отображается сообщение:

Не указан входной файл.

Кнопка отправляет форму, которая должна выполнять импорт. php, как указано в параметр действия. Теперь, так как это laravel, я не уверен, куда поместить импорт файла. php. Я поместил его в ту же папку, что и блейд-файл (resources / views / import. php), а также в приложение / Http / Controllers / import. php. Я все еще новичок от ie до laravel, поэтому не уверен, как все это должно работать.

Вот код для импорта. php:

<?php
echo "made it to import.php<br />";
if(isset($_POST["Import"])){

   $filename=$_FILES["file"]["tmp_name"];    
   if($_FILES["file"]["size"] > 0) {
      $file = fopen($filename, "r");
      while (!feof($file)) {
         echo fgets($file). "<br />";
      }
      fclose($file);  
   }
}   
?>

Я никогда не вижу "сделал это для импорта. php" в консоли. В URL браузера я вижу «hometead.test / import. php». Может кто-нибудь заметит проблему?

...