Ray*_*dri 1 php csv laravel laravel-5
每当我上传 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>
Run Code Online (Sandbox Code Playgroud)
这是控制器
<?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";
}
}
?>
Run Code Online (Sandbox Code Playgroud)
上传的csv结果
csv/VKgVPMvwcQKqpqHAXZ1s6o1IyIbz5BkgQqjxotPc.txt
Run Code Online (Sandbox Code Playgroud)
谢谢。
您可以替换->store('csv')为,->storeAs('csv', 'filename.csv')为文件指定一个带有扩展名的特定文件名。如果你不这样做,Laravel 将根据文件内容(对于 csv,基本上是文本)采用文件扩展名。
您还可以用来$request->file('csv')->getClientOriginalExtension()获取用户提交文件时使用的文件名的文件扩展名。不过,用户可以故意更改此扩展名。$request->file('csv')->extension()将为您提供 Laravel 为该文件提供的文件扩展名。
要生成这样的文件名哈希,请使用Str::random(40)(系统本身也使用它)。因此,您可以使用如下内容:
$file = $request->file('csv');
$path = $file->storeAs('csv', \Str::random(40) . '.' . $file->getClientOriginalExtension());
Run Code Online (Sandbox Code Playgroud)