LARAVEL Получить содержимое файла и разделить, чтобы сохранить в другой таблице - PullRequest
0 голосов
/ 30 апреля 2020

Привет всем! Мне нужна ваша помощь в том, как разделить значение из textarea и вставить в таблицу пользователей, используя laravel, я смог получить файл content = "name | username | password", мне нужно разделить каждое значение так, Я могу сохранить его в таблице пользователей, сам файл сохраняется в другой таблице. Должен ли я поместить его в другой метод или просто указать свою целевую таблицу в том же виде, в котором будет сохранен файл? Ваша помощь будет высоко оценена.

UploadController:

    public function store(Request $request){
        $validator = Validator::make(
            $request->all(),
            ['filename' => 'required|mimes:txt,jpeg,png,jpg,bmp|max:2048']
        );
        if ($validator->fails()) {
            return back()->withErrors($validator->errors());
        }
        // if validation success
        if ($file   =   $request->file('filename')) {
            $filename = 'uploaded-here.' . $file->getClientOriginalExtension();
            //stored in laravel local storage
            $target_path    =   $file->storeAs('uploaded-here/', $filename);
            if ($file->move($target_path, $filename)) {
                // save file name in the database
                $file   =   File::create(['filename' => $filename]);
                return back()->with("success", "File uploaded successfully");
            }
        }
    }

html код:

    <div class="form-group" {{ $errors->has('filename') ? 'has-error' : '' }}>
          <label for="filename"></label>
               <input type="file" name="filename" id="filename" class="form-control">
               <span class="text-danger"> {{ $errors->first('filename') }}</span>
               <textarea id="editor" name="editor></textarea>
    </div>
    <button type="submit" class="btn btn-success btn-md"> Upload </button>

js

      window.onload = function() {
        var doc = document.getElementById('filename');
        if (doc) {
            doc.addEventListener('change', getFile);
        }
      }
      function getFile(event) {
        const input = event.target
        if ('files' in input && input.files.length > 0) {
             placeFileContent(
                 document.getElementById('editor'),
                 input.files[0])
        }
     }
     function placeFileContent(target, file) {
        readFileContent(file).then(content => {
            target.value = content
        }).catch(error => console.log(error))
     }
     function readFileContent(file) {
        const reader = new FileReader()
        return new Promise((resolve, reject) => {
            reader.onload = event => resolve(event.target.result)
            reader.onerror = error => reject(error)
            reader.readAsText(file)
         })
     }

1 Ответ

0 голосов
/ 01 мая 2020

Произошла ошибка. Знак закрытой кавычки отсутствует в атрибуте name textarea.

<textarea id="editor" name="editor"></textarea>

Вы можете разделить, используя метод JavaScipt split(). Например:

Скажем, у вас есть значение textarea в качестве заданного вами формата: name | email | password, как вы привели в примере: example errol | errol.boneo13@gmail.com | password123.

Допустим, вы получили значение textarea,

var textValue = document.getElementById('editor').value;
textValue = textValue .split(" | ");
var name = textValue [0];
var email = textValue [1];
var password = textValue [2];

Надеюсь, это поможет ....

РЕДАКТИРОВАТЬ ::

Как вы хотели сделать в laravel, вы можете сделать как следующее:

$textValue = $request->editor;
$textValue = explode(" | ", $textValue );
$name = $textValue [0];
$email = $textValue [1];
$password = $textValue [2];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...