【问题标题】:How to store csv file laravel 5 php?如何存储 csv 文件 laravel 5 php?
【发布时间】:2018-07-28 08:20:00
【问题描述】:

每当我在文件上传后上传 CSV 文件时,它都会更改为 .txt

echo "$path";显示保存的文件格式的路径是.txt而不是.csv。

有没有办法用实际的 .csv 存储文件,或者我只是在某个地方犯了错误?

这是我的表格

    <!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>Upload file</title>
</head>
<body>
    <form class="" action="{{URL::to('store')}}" enctype="multipart/form-data" method="post">
        <input type="file" name="csv" value="">
        <input type="hidden" name="_token" value="<?php echo csrf_token(); ?>">
        <br>
        <button type="submit" name="button">upload file</button>
    </form>
</body>
</html>

这是控制器

<?php

namespace App\Http\Controllers;

use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\DB;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\URL;
use Storage;


class store extends Controller {

    function index(request $request){
        $path=$request->file('csv')->store('csv');

        echo "$path";

    }

}
?> 

上传的csv结果

csv/VKgVPMvwcQKqpqHAXZ1s6o1IyIbz5BkgQqjxotPc.txt

谢谢。

【问题讨论】:

    标签: php laravel csv laravel-5


    【解决方案1】:

    您可以将-&gt;store('csv') 替换为-&gt;storeAs('csv', 'filename.csv'),为文件指定一个带有扩展名的特定文件名。如果你不这样做,Laravel 将根据文件内容(对于 csv,基本上是文本)假设文件扩展名。

    您还可以使用$request-&gt;file('csv')-&gt;getClientOriginalExtension() 来获取用户提交文件的文件名的文件扩展名。但是,用户可以故意更改此扩展名。 $request-&gt;file('csv')-&gt;extension() 将为您提供 Laravel 为文件提供的文件扩展名。

    要生成这样的文件名散列,请使用Str::random(40)(系统本身也使用它)。因此,您可以使用以下内容:

    $file = $request->file('csv');
    $path = $file->storeAs('csv', \Str::random(40) . '.' . $file->getClientOriginalExtension());
    

    【讨论】:

    • 谢谢先生!我是 Laravel 的新手,所以我不知道 laravel 可以假设文件扩展名并更改扩展名。
    猜你喜欢
    • 1970-01-01
    • 2016-05-27
    • 1970-01-01
    • 1970-01-01
    • 2018-08-09
    • 1970-01-01
    • 2015-12-24
    • 2016-05-01
    • 2017-03-15
    相关资源
    最近更新 更多