将图片(来自javascript)保存在公共文件夹中(通过php)

时间:2019-06-06 16:27:42

标签: javascript php laravel

我正在尝试使用此软件包 https://vuejsexamples.com/a-beautiful-vue-component-for-image-cropping-and-uploading/ 但是然后我想知道如何将图像保存在文件夹中。

我正在尝试在php中执行此操作,以便以后可以轻松使用该路由,但是如果更简单,也可以使用JS。

public function uploadfile(Request $request){
    $img = $request->img;
    $newlocation = $request->newlocation;
    $filename = $request->filename;

    $img = str_replace('data:image/png;base64,', '', $request->img); //I tried with and without this

    return file_put_contents ($newlocation . "/" . $filename , $img );
}

我实际上在公共文件夹中获得了一个图像,但是内容绝对不是我想要的:) image.jpg包含文本C:\ Users \ usr \ AppData \ Local \ Temp \ phpEE72.tmp

2 个答案:

答案 0 :(得分:1)

我发现此链接在上传图片时非常有用: https://hdtuto.com/article/laravel-57-image-upload-with-validation-example

在我的控制器中,经过验证后,我会有类似的内容,它允许使用不同的图像文件类型,例如png和jpg:

$name = $request->input('name');
$getimageName = $name.'.'.$request->image->getClientOriginalExtension();
$request->image->move(public_path('filelocation'), $getimageName);

在我的filesystems.php文件中:

'disks' = > [
    'filelocation' => [
        'driver' => 'local',
        'root' => public_path().'/foldername',
        'url' => env('APP_URL').'/public/foldername',
        'visibility' => 'public',
    ]
]

答案 1 :(得分:0)

这是文件名的字符串。在后台,PHP通过放置在temp目录中来处理所有上载到服务器的文件。由您决定要对其进行处理。您需要做的就是首先阅读文件的内容:

A/B

没有您的str_replace。

您应该考虑按照https://laravel.com/docs/5.8/filesystem#file-uploads中的建议,以更Laravel的方式执行此操作,但要回答最直接的问题,则需要file_get_contents。