数据库
首页 > 数据库> > php-Laravel 5图片上传错误的数据库路径

php-Laravel 5图片上传错误的数据库路径

作者:互联网

我的图片上传输入出现了问题.我试图在我的Laravel 5项目中创建一个文件上传输入,但是我遇到了保存在数据库映像表中的路径问题.

表单正在工作并且正在发布,但是,当数据库保存图像的路径时,它正在输入:/ Applications / MAMP / tmp / php / phptvwTYW而不是仅使用文件名.

此外,该文件被移动到正确的public / img文件夹.

public function store(PostRequest $request)
{
    $this->createPost($request);

    $destinationpath = public_path() . '/img/';

    $filename = $request->file('image_url')->getClientOriginalName();

    $request->file('image_url')->move( $destinationpath,$filename );

    flash()->success('Your Post Has Been Created!');

    return redirect('posts');
}

解决方法:

这是我的项目中当前使用的示例控制器功能

public function postCreateInternal(CreateDocumentInternalRequest $request) {
        $data_information = $request->only(['title', 'assigned_to', 'folder_id', 'document_source']);
        if ($request->hasFile('file_name') && $request->file('file_name')->isValid()) {
            $document = $request->file('file_name');
            #creating file Name
            $mytime = Carbon::now();
            $date_now = $mytime->toDateTimeString();
            $date_now = $this->prepareFileNameString($date_now);
            $document_extension = $document->getClientOriginalExtension();

            $document_name = $this->prepareFileNameString(basename($document->getClientOriginalName(), '.' . $document_extension));
            $document_fullName = $document_name . "_" . ($date_now) . "." . $document_extension;
            $data_information['file_type'] = $document->getMimeType();
            $data_information['file_size'] = $document->getSize();
            $data_information['file_name'] = $document_fullName;
            $data_information['file_download_type'] = "Internal";
            $document->move(public_path() . '/uploads/documents/', $document_fullName);
        }
        if ($pot = $this->document->create($data_information)) {
            $this->notification_admin->sendCreateDocument($data_information);
            return redirect()->route('documents')->with('success', trans('document.create.msg_success'));
//          return redirect()->route('update/document', $pot->id)->with('success', trans('document.create.msg_success'));
        }
        return redirect()->route('create/document')->with('error', trans('document.msg_error'));
    }

CreateDocumentInternalRequest主要根据Laravel 5用于文件和其他数据验证

而且查看文件似乎喜欢:

{!! Form::open(["class"=>"form-horizontal","data-parsley-validate"=>"data-parsley-validate",'role'=>'form','files'=>true]) !!}
<div class="form-group  required {{ $errors->first('file_name', ' has-error') }}">
    {!!Form::label('file_name', trans('document.label.file_name'), array('class' => 'col-md-4 control-label left-label'))!!}
    <div class="col-sm-6">
        {!! Form::file('file_name') !!}
        {!! $errors->first('file_name', '<span class="help-block">:message</span>') !!}
    </div>
</div>
{!! Form::close() !!}

在我当前的实现中,首先我要检查上传的文件,使用当前时间戳重命名文件名,然后重新上传我想要的位置.
如果您需要任何帮助,请使用我提供的方法让我知道以更好的方式进行改进.

标签:laravel,laravel-5,upload,php
来源: https://codeday.me/bug/20191120/2042069.html