Код 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'));