静态文件的相对路径表达/反应

时间:2019-08-19 09:18:53

标签: node.js reactjs express

我在public class ParallelWalks { ExecutorService executor = Executors.newCachedThreadPool(); ExecutorService singleThreadExecutor = Executors.newSingleThreadExecutor(); public static void main(String[] args) { new ParallelWalks().exec(); } public ExecutorService executorSelector(Path path) { if(isNetworkDrive(path)) { return executor; }else { return singleThreadExecutor; } } private boolean isNetworkDrive(Path path) { // Here goes the logic to choose which path should go on a different // thread. return path.toString().contains("srv"); } private void exec() { Path path = Paths.get("/home/you/Desktop"); try (Stream<Path> files = Files.list(path)) { files.forEach(this::taskRunner); } catch (IOException e) { // Do something with the exception } } private void taskRunner(final Path path) { executorSelector(path) .submit(() -> doWalk(path)); } private void doWalk(Path path) { try (Stream<Path> paths = Files.walk(path)) { paths.filter(Files::isRegularFile).forEach(System.out::println); } catch (IOException e) { // Do something with the exception } } } 上运行我的react客户端,在localhost:3000上运行我的express服务器,并且我的服务器中有一个包含图像的静态文件夹。

我试图将图像路径保存到MySQL数据库,并在React中将其用作img src,但在不对路径进行硬编码的情况下,无法弄清楚该如何做。例如,localhost:4000可以工作,但是如果明天更改主机名,我的所有数据库数据都将变得无关紧要。

1 个答案:

答案 0 :(得分:0)

三个答案:

  1. 在react中,您可以通过连接常量字符串和变量来填充道具。只需将/images/img1.jpg而不是完整URL保存在数据库中。然后在反应中做<img src={'http://localhost:4000/' + imagePathFromDB} />。当您更改服务器时,只需更改一次。

  2. 您可以创建一个简单的SQL查询来更新您的数据库以使其相关,这就是SQL数据库的优点。

例如

update images set path=replace(path,'localhost:4000','newdomain.com')

香草!

  1. 如果您使用create-react-app,则可以使用proxy parameter从同一域提供前端和后端。然后只需保存在数据库/myimage.jpg和React <img src={myVariable} />
相关问题