duancheng8000
2018-11-08 10:48
浏览 124
已采纳

无法使用enctype =“multipart / form-data”获取输入值

I'm working with Forms on Laravel, and I'm still learning. I thought I had it all figured out already, but I've been alted by an issue:

When I have enctype="multipart/form-data", I can't get the input values. The file I upload still gets uploaded to the disk, but the rest of the values are not printed. If I remove enctype="multipart/form-data", I do get the values.

Form:

<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"> &nbsp </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"> &nbsp </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>

Controller:

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:

Route::post('alteracaocomissao', 'PostController@AltComiss');

Testing code:

@php

session_start();

  if (isset($_SESSION["testPostSection1"])) {

    echo '<pre>'; print_r($_SESSION["testPostSection1"]); echo '</pre>';

  }

@endphp

I do have SESSION there to test if the values are getting saved, because I still havn't set up the database, and until I do I'm using SESSION to test. Obviously once I set the database up I will switch from SESSION to inserting the values into the database.

Thanks in advance!

  • 写回答
  • 好问题 提建议
  • 追加酬金
  • 关注问题
  • 收藏
  • 邀请回答

1条回答 默认 最新

  • duannei0044 2018-11-08 10:58
    已采纳

    I think it's will help you

    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');
      }
    

    }

    On your view file for get the session data just use

    @if (Session::has('allInput'))
        <?php 
          echo '<pre>';
              print_r(Session::get('allInput'));
          echo '</pre>';
        ?>
    @endif
    
    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题