Я хочу загрузить файл из модального 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">×</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](https://i.stack.imgur.com/rjDtR.png)
Проблема в том, что, когда я нажимаю зеленую кнопку «Загрузить», предполагается, что файл загружается, а затем выводит содержимое файла построчно. Вместо этого отображается сообщение:
Не указан входной файл.
Кнопка отправляет форму, которая должна выполнять импорт. 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». Может кто-нибудь заметит проблему?