php - 无法使用 enctype="multipart/form-data" 获取输入值
问题描述
我在 Laravel 上使用 Forms,我还在学习。我以为我已经把这一切都弄清楚了,但是我被一个问题所困扰:
当我有 enctype="multipart/form-data" 时,我无法获取输入值。我上传的文件仍会上传到磁盘,但不会打印其余值。如果我删除 enctype="multipart/form-data",我会得到这些值。
形式:
<form id="forms" method="POST" action="alteracaocomissao" enctype="multipart/form-data">
{{ csrf_field() }}
<div class="form-row">
<div class="form-group col-md-6">
<label for="nomeentidade">Nome:</label>
<input type="text" class="form-control" id="nome1" name="nome1" placeholder="Nome entidade" required>
</div>
<div class="form-group col-md-6">
<label for="numentidade">Nº:</label>
<input type="text" class="form-control" id="num1" name="num1" placeholder="Número" required>
</div>
</div>
<div class="form-row">
<div class="form-group col-md-6 mb-3">
<label for="conta">Conta:</label>
<input type="text" class="form-control" id="conta" name="conta" placeholder="Conta" required>
</div>
<div class="form-group col-md-3 mb-3">
<label for="balcao">Local:</label>
<select class="form-control" id="local1" name="local1" required>
<option value="">Escolher...</option>
<option value="1">Local</option>
<option value="2">Local1</option>
</select>
</div>
<div class="form-group col-md-3 mb-3">
<label for="atleracao">Tipo de alteração:</label>
<select class="form-control" id="alteracao" name="alteracao" required>
<option value="">Escolher...</option>
<option value="1">Alterar1</option>
<option value="2">Alterar2</option>
</select>
</div>
</div>
<hr>
<div class="form-row" id="buildyourform">
<div class="form-group col-md-4">
<label for="comissao">TEST:</label>
<select class="form-control" id="TEST1" name="TEST1" required>
<option value="">Escolher...</option>
<option value="1">TEST</option>
<option value="2">TEST1</option>
</select>
</div>
<div class="form-group col-md-2">
<label for="desconto">Desconto solicitado:</label>
<div class="input-group">
<input type="text" class="form-control" id="desconto" name="desconto" placeholder="Número" required>
<span class=input-group-addon>%</span>
</div>
</div>
<div class="form-group col-md-2">
<label for="add">   </label>
<input type="button" value="Adicionar campos" class="form-control btn btn-light" id="add" />
</div>
<div class="form-group col-md-1" id="2field">
<label for="remove">   </label>
<input type="button" value="Remover" class="form-control btn btn-light" id="remove" />
</div>
<div class="form-group col-md-2">
</div>
</div>
<hr>
<div class="form-row">
<div class="form-group col-md-12">
<label for="fundamentacao">Fundamentação:</label>
<textarea type="text" class="form-control" id="fundamentacao" name="fundamentacao" placeholder="Fundamentação do pedido" required></textarea>
</div>
</div>
<div class="form-row">
<div class="form-group col-md-2">
<label for="file2">Anexo:</label>
<input type="file" name="file2" id="file2" required>
</div>
</div>
<hr>
<button type="submit" class="btn btn-primary">Enviar</button>
</form>
控制器:
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class PostController extends Controller
{
public function AltComiss(Request $request)
{
session_start();
$array1 = $request -> all();
$path = $request->file('file2')->store('altComiss');
$arrayRm1 = array_shift($array1);
$_SESSION["testPostSection1"] = $array1;
return redirect('alteracaocomissao');
}
}
路线:
Route::post('alteracaocomissao', 'PostController@AltComiss');
测试代码:
@php
session_start();
if (isset($_SESSION["testPostSection1"])) {
echo '<pre>'; print_r($_SESSION["testPostSection1"]); echo '</pre>';
}
@endphp
我确实有 SESSION 来测试值是否被保存,因为我还没有设置数据库,直到我使用 SESSION 来测试。显然,一旦我设置了数据库,我将从 SESSION 切换到将值插入数据库。
提前致谢!
解决方案
我想它会帮助你
use Illuminate\Http\Request;
//use these For Start your session and Store file
use Illuminate\Support\Facades\Session;
use Illuminate\Support\Facades\Storage;
class PostController extends Controller{
public function AltComiss(Request $request){
$array1 = $request->all();
if ($request->hasFile('file2')) {
$file = $request->file('file2');
$destinationPath = 'altComiss';
$file->move($destinationPath,$file->getClientOriginalName());
}
$arrayRm1 = array_shift($array1);
Session::flash('allInput',$arrayRm1);
return redirect('alteracaocomissao');
}
}
在您的视图文件中获取会话数据只需使用
@if (Session::has('allInput'))
<?php
echo '<pre>';
print_r(Session::get('allInput'));
echo '</pre>';
?>
@endif
推荐阅读
- python - 如何将电报机器人与 Amazon S3 连接?
- c# - C# String ReadAllFile 每行
- apt-get - E:存储库“http://ppa.launchpad.net/certbot/certbot/ubuntu 焦点发布”没有发布文件
- c++ - 使用 C++ 进行行程编码
- python - 生成所有行随机且所有列总和为正的所有 0-1 矩阵的最佳方法?
- reactjs - 朱莉娅使用来自朱莉娅的电子服务反应前端的正确方法是什么
- gitlab - gitlab首次登录没有重定向到root的密码重置屏幕
- python - 类型提示。如何暗示传递给函数的对象必须具有某种方法/属性访问权限?
- performance - 如何提高在 DolphinDB 中计算希腊语的性能?
- sql - 如何在 SQL 中舍入百分比计算?