以不同扩展名上载的Laravel和DropzoneJS文件
我用Laravel和DropzoneJS创建了一个表单,我尝试上传一个Gimp文件.xcf,当它被上传时,它被保存在S3中,如下所示以不同扩展名上载的Laravel和DropzoneJS文件,laravel,laravel-5,amazon-s3,file-upload,dropzone.js,Laravel,Laravel 5,Amazon S3,File Upload,Dropzone.js,我用Laravel和DropzoneJS创建了一个表单,我尝试上传一个Gimp文件.xcf,当它被上传时,它被保存在S3中,如下所示 <random-name>. 没有xcf扩展名,只有以点结尾的随机名称 另外,我创建了一个文本文件,并在尝试上载扩展名为.txt的文件时将其重命名为test.xcf 下面是我的UploadController.php,它处理上传: <?php namespace App\Http\Controllers; use App\Upload; u
<random-name>.
没有xcf扩展名,只有以点结尾的随机名称
另外,我创建了一个文本文件,并在尝试上载扩展名为.txt的文件时将其重命名为test.xcf
下面是我的UploadController.php,它处理上传:
<?php
namespace App\Http\Controllers;
use App\Upload;
use Illuminate\Http\Request;
class UploadController extends Controller
{
public function upload(Request $request)
{
$originalName = $request->file('file')->getClientOriginalName();
$fileSize = $request->file('file')->getClientSize();
$path = $request->file('file')->store('documents');
$explode = explode('documents/', $path);
$name = $explode[1];
$uniqueId = $this->generateUniqueId();
$upload = new Upload();
$upload->unique_id = $uniqueId;
$upload->name = $name;
$upload->path = $path;
$upload->original_name = $originalName;
$upload->size = $fileSize;
if ($upload->save())
{
return response()->json([
'original_name' => $originalName,
'size' => $fileSize,
'url' => env('AWS_URL') . $path,
'id' => $uniqueId,
'status' => 'OK'
]);
}
return response()->json(['status' => 'BAD', 'message' => 'There was a problem saving your file.']);
}
public function generateUniqueId()
{
$result = '1';
$result .= rand(100000000, 999999999);
while(Upload::where('unique_id', '=', $result)->first())
{
$result = '1';
$result .= rand(100000000, 999999999);
}
return $result;
}
}
我不知道它为什么会这样做。如果您使用的是Laravel5+,那么您也应该使用它来获得扩展
$extension = $file->getClientOriginalExtension();
这很好。我建议您为文件名生成自己的哈希,就像我在下面代码中所做的那样: $file=$request->file'csv'; $path=$file->storeAs “csv”, md5$file->getClientOriginalName$文件->getClientOriginalExtension, “s3” ;
您还可以将uniqid添加到md5输入中问题不是获取扩展名,而是上载文件的新名称以点结尾。或者它被重命名为.txt。您必须在其中附加扩展名。附加在其中,Laravel会自动生成一个扩展名为的文件名,并将文件存储在S3中。