Загрузить объект Javascript (вывод svgCrowbar) на сервер Laravel 5.6 - PullRequest
0 голосов
/ 18 сентября 2018

Код SVG Crowbar здесь , я использую его для загрузки SVG, но я хочу иметь возможность загружать их и на сервер (одним щелчком мыши). Я не знаю javascript за пределами D3.js, но я считаю, что это раздел создания и загрузки объекта в коде:

var url = window.URL.createObjectURL(new Blob(source.source, { "type" : "text\/xml" }));

var a = document.createElement("a");
body.appendChild(a);
a.setAttribute("class", "svg-crowbar");
a.setAttribute("download", filename + ".svg");
a.setAttribute("href", url);
a.style["display"] = "none";
a.click();

Я использую следующее для загрузки файлов Laravel после извлечения их из запроса POST:

{!! Form::file('file', array('class' => 'form-control')) !!}

Вопрос: Как бы вы загрузили SVG, созданный с помощью SVG Crowbar? (не заставляя пользователя искать файл для загрузки после загрузки)

Меня смущает тот факт, что это объект, а не файл и пересекающиеся языковые линии.


Обновление

Я пытался сделать это с помощью ajax в отдельном блейд-файле, но не могу заставить его работать до сих пор. Я вижу другие вопросы об этом , и их скрипты могут работать в моем браузере, но это не работает для меня. Я продолжаю получать сообщение об ошибке от ajax вместо его сообщения об успехе. Все остальные ошибки исчезли. Я нажимаю на «Сеть» в «элементе проверки», и все имеет статус 200, включая xhr.

Я также проверил файл .env и config / session, убедившись, что для cookie cookie безопасного сеанса установлено значение false, время моего сервера в норме, я могу войти в систему нормально, могу нормально загружать файлы Laravel и все остальное нормально. Я удалил файлы cookie из браузера и снова вошел в систему, но они по-прежнему выдают ошибку ajax вместо успеха.

Для просмотра:

@extends('layouts.app')        
@include('header') //just first html tag, linked scripts, navbar
        <head><meta name="csrf-token" content="{{ csrf_token() }}"></head>
    @csrf
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <script  type="text/javascript">
    var value = 62;
    $.ajaxSetup({
      headers: {
        'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
      }
    });
    var data = { value : 63 };
      $.ajax({
        type: 'POST',
        url: 'http://localhost/torphin/public/graphbuilder/upload',
        processData: false,
        contentType: false,
        cache: false,
        dataType: 'json',
        data: { value : 63 },
        success: function(data) {
          console.log('Value added ' + value);
        },
        error: function(e) {
          console.log('Error!', e);
        }
      });
    </script>
    @include('footer') //just footer, jquery, and bootstrap links

Для контроллера:

public function uploadGet(Request $request)
{   
    return view('svgUpload');
}
public function uploadGraph(Request $request)
{
    dd($request);
    session([ 'value' => $request->value]);
}

Для маршрутов:

Route::get('/graphbuilder/upload', array('uses' => 'Controller@uploadGet'));
Route::post('/graphbuilder/upload', array('uses' => 'Controller@uploadGraph'));

1 Ответ

0 голосов
/ 20 сентября 2018

Итак, я заглянул внутрь сообщения об ошибке, что мой ajax-запрос должен быть напечатан, и после вставки его в google нашел этот ТАК вопрос , заявив, что это:

public function uploadGraph(Request $request)
{
    dd($request);
    session([ 'value' => $request->value]);
}

следует изменить это:

public function uploadGraph(Request $request)
{
    return $request->all();
}

Затем он передает консольный журнал значения «62» в консоли. Я должен быть в состоянии передать значение URL из SVG Crowbar и получить его на странице тогда. Спасибо всем, кто нашел время, чтобы прочитать это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...