SVG Crowbar的代码在这里,我正在使用它下载SVG,但我希望能够将它们上传到服务器上(只需单击一次)。我不知道D3之外的javascript。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();
在从POST请求中检索Laravel文件上传后,我使用以下方法:
{!! Form::file('file', array('class' => 'form-control')) !!}
问题:如何上传使用svg撬杆创建的svg?(无需用户在下载后浏览文件进行上传)
事实上,它是一个对象,与文件相反,并且跨越了语言线,这让我困惑。
我已经尝试在一个单独的刀片文件中通过ajax实现这一点,但我仍然无法让它工作。我看到了关于这个的其他问题,他们的小提琴可以在我的浏览器中工作,但这对我不起作用。我一直从ajax收到错误消息,而不是它的成功消息。所有其他错误现在都消失了。我在“inspect element”中点击网络,一切都是状态200,包括xhr。
我还检查了. env文件和配置/会话,确保安全会话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'));
所以我查看了我的ajax请求应该打印的错误信息,并将其粘贴到谷歌后,发现了这个SO问题,指出:
public function uploadGraph(Request $request)
{
dd($request);
session([ 'value' => $request->value]);
}
应该改变这一点:
public function uploadGraph(Request $request)
{
return $request->all();
}
然后在控制台中传递值为“62”的控制台日志。我应该能够从SVG Crowbar传递url值,然后在页面中接收它。感谢所有花时间阅读本文的人。