0

我处于以下情况:

  • Laravel 8应用程序。
  • 由用户上传的 STL 文件存储在storage/app/users/{userid}文件夹中。
  • STL 是私有的,可能不在公用文件夹中,因此可能并非所有人都可以访问。

现在我正在尝试通过 javascript 访问这些私有 STL 文件,以将它们加载到我的 Three.js 场景中以供查看。

我的问题是:如果我尝试使用storage_path()我的 Laravel 控制器中的函数预先从数据库中获取文件路径,然后将此文件路径(例如本地/Users/Leon/MyLaravelApp/storage/app/users/1/file.stl:)传递给我的 Three.js STLLoader 函数:

import * as THREE from 'three';
import { STLLoader } from 'three/examples/jsm/loaders/STLLoader.js';

// {...}
let THREE_loader = new STLLoader();
let THREE_geometry;

THREE_loader.load(filePath, function (geometry) {
    THREE_geometry = geometry;

    // {...}
});

我 - 当然 - 每次尝试时都会收到错误消息 404,因为给定的路径是相对于我的网络根目录的,因此不正确!

[错误] 加载资源失败:服务器响应状态为 404(未找到) http://127.0.0.1:8000/Users/Leon/MyLaravelApp/storage/app/users/1/file.stl

现在我的问题是:

有没有办法解决这个问题?如何在我的 Laravel 8 应用程序中从 javascript 访问私有文件(不在公用文件夹中)?必须有解决方案吗?


我想到的其他解决方案:

  • 将文件直接存储在数据库中-> 文件太大?!
  • 在数据库的公共(!)文件夹中存储文件的“安全”加密文件路径->不够安全?!

但这两种“解决方案”绝对不是我的最爱之一!


也许有人可以指出我正确的方向?

最好的问候,莱昂

4

0 回答 0