gpt4 book ai didi

php - 从flash上​​传位图数据到laravel路由

转载 作者:可可西里 更新时间:2023-11-01 13:27:48 25 4
gpt4 key购买 nike

我有一个内置在 AS3 中的视频播放器。我使用以下代码拍摄视频播放器的快照:

var uploadUrl = 'http://localhost:8000/assets/uploadframegrab';
var bitmap = new Bitmap();
var graphicsData : Vector.<IGraphicsData>;
graphicsData = container.graphics.readGraphicsData();
bitmap.bitmapData = GraphicsBitmapFill(graphicsData[0]).bitmapData;

var jpgEncoder:JPGEncoder = new JPGEncoder(85);
var jpgStream:ByteArray = jpgEncoder.encode(bitmap.bitmapData);

var loader:URLLoader = new URLLoader();
var header:URLRequestHeader = new URLRequestHeader("Content-type", "application/octet-stream");
var csrf:URLRequestHeader = new URLRequestHeader("X-CSRF-Token", csrfToken);
var request:URLRequest = new URLRequest(uploadUrl);
request.requestHeaders.push(header);
request.requestHeaders.push(csrf);
request.method = URLRequestMethod.POST;
request.data = jpgStream;
loader.load(request);

我需要使用我的 Laravel 路由之一将编码上传到 JPG。我的路线如下:

Route::post('assets/uploadframegrab', 'AssetController@uploadFramegrab');

当我运行 AS3 代码时,它会调用 laravel 路由,但我的 $request 变量似乎是空的。网络信息选项卡上的 Request Payload 属性显示了我所有的 header 和内容,其中包含看起来像图像文件源的内容。

如果我执行 return Response::json(['filedata' => $request]); 我得到的是:

filedata: {
attributes: {},
request: {},
query: {},
server: {},
files: {},
cookies: {},
headers: {}
}

我的 uploadFramegrab 函数现在很简单:

public function uploadFramegrab(Request $request)
{
if ($request)
{
return Response::json(['filedata' => $request]);
}
else
{
return Response::json(['error' => 'no file uploaded']);
}
}

我在网上搜索过,但找不到任何专门用于从 flash 上传到 laravel 的东西。我已经完成了 javascript 到 laravel 没问题。有人知道这可能是什么吗?如果您想了解更多信息,请询问。

最佳答案

为此,您可以使用 Multipart.as (AS3 多部分表单数据请求生成器)来自 Jonas Monnier .它真的很容易使用,看看这个例子(使用来自 github 项目页面的基本例子):

var upload_url:String = 'http://www.example.com/upload';

// create an orange square
var bmp_data:BitmapData = new BitmapData(400, 400, false, 0xff9900);

// compress our BitmapData as a jpg image
var image:ByteArray = new JPGEncoder(75).encode(bmp_data);

// create our Multipart form
var form:Multipart = new Multipart(upload_url);

// add some fields if you need to send some informations
form.addField('name', 'bmp.jpg');
form.addField('size', image.length.toString());

// add our image
form.addFile('image', image, 'image/jpeg', 'bmp.jpg');

var loader:URLLoader = new URLLoader();
loader.load(form.request);

然后,在 PHP 端,您像往常一样做:

public function upload(\Illuminate\Http\Request $request)
{
if($request->hasFile('image'))
{
$file = $request->file('image');
$upload_success = $file->move($your_upload_dir, $file->getClientOriginalName());

if($upload_success)
{
return('The file "'.$request->get('name').'" was successfully uploaded');
}
else
{
return('An error has occurred !');
}

}
return('There is no "image" file !');
}

希望对您有所帮助。

关于php - 从flash上​​传位图数据到laravel路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32658496/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com