Vertx 在 html 中使用上传的图像
Vertx use uploaded images in html
我可以在默认位置上传文件。
router.route().handler(
BodyHandler.create()
.setBodyLimit(500 * KB)
);
router.post("/admin/add").handler(adminActions::createNewItem);
此正文处理程序将文件放入文件上传中。这是上传文件的代码:
public void createNewItem(RoutingContext context) {
var request = context.request();
var type = context.request().getFormAttribute("type");
// other code...
for(var f : context.fileUploads()) {
System.out.println(f.fileName());
}
}
这些是我上传的文件。
file-uploads 文件夹在我项目的根目录下,它是自动创建的。如何访问该文件夹的内容以在我的 html 页面中显示图像?
也很奇怪,他们没有扩展名...
Vert.x 可以 serve static content 使用静态处理程序:
router.route("/static/*").handler(StaticHandler.create());
静态处理程序 webroot
可以配置为指向您的文件上传目录。
但是,如果您正在使用私有数据的 public 服务,我建议您仔细考虑安全性:如果您在没有任何保护的情况下公开此目录的内容,恶意用户可能会尝试下载任意内容。
除了用户 tsegismont 所说的之外,我还必须解释发生了什么。我已经使用了 statichandler 但不是以正确的方式。
这是我以前的。文件夹 resource
在 src > main > java 里面,我想把照片放在那里,但这是不可能的;此文件夹已编译,每次发生上传以查看图片时我都应该重新启动应用程序。不是个好主意。
解决方案。我在 src
的同一级别创建了一个名为 image-uploads
的文件夹,然后我使用了以下代码:
router.route("/uploads/imgs/*").handler(
StaticHandler.create("image-uploads").setCachingEnabled(false)
);
而且有效!当我调用 https://mywebsite.com/uploads/imgs/something.png vertx 进入图像上传文件夹并提供图像时。
因此,如果您想将图像上传到服务器,然后通过 link 在浏览器中查看它们,请不要上传 src
或子文件夹中的文件。在 src 之外做。哦,当你上传时这样做:
router.route().handler(
BodyHandler.create()
.setUploadsDirectory("image-uploads")
.setBodyLimit(400 * KB)
.setMergeFormAttributes(true)
);
这样setUploadsDirectory
指向我放数据的src外的文件夹
我可以在默认位置上传文件。
router.route().handler(
BodyHandler.create()
.setBodyLimit(500 * KB)
);
router.post("/admin/add").handler(adminActions::createNewItem);
此正文处理程序将文件放入文件上传中。这是上传文件的代码:
public void createNewItem(RoutingContext context) {
var request = context.request();
var type = context.request().getFormAttribute("type");
// other code...
for(var f : context.fileUploads()) {
System.out.println(f.fileName());
}
}
这些是我上传的文件。
file-uploads 文件夹在我项目的根目录下,它是自动创建的。如何访问该文件夹的内容以在我的 html 页面中显示图像?
也很奇怪,他们没有扩展名...
Vert.x 可以 serve static content 使用静态处理程序:
router.route("/static/*").handler(StaticHandler.create());
静态处理程序 webroot
可以配置为指向您的文件上传目录。
但是,如果您正在使用私有数据的 public 服务,我建议您仔细考虑安全性:如果您在没有任何保护的情况下公开此目录的内容,恶意用户可能会尝试下载任意内容。
除了用户 tsegismont 所说的之外,我还必须解释发生了什么。我已经使用了 statichandler 但不是以正确的方式。
这是我以前的。文件夹 resource
在 src > main > java 里面,我想把照片放在那里,但这是不可能的;此文件夹已编译,每次发生上传以查看图片时我都应该重新启动应用程序。不是个好主意。
解决方案。我在 src
的同一级别创建了一个名为 image-uploads
的文件夹,然后我使用了以下代码:
router.route("/uploads/imgs/*").handler(
StaticHandler.create("image-uploads").setCachingEnabled(false)
);
而且有效!当我调用 https://mywebsite.com/uploads/imgs/something.png vertx 进入图像上传文件夹并提供图像时。
因此,如果您想将图像上传到服务器,然后通过 link 在浏览器中查看它们,请不要上传 src
或子文件夹中的文件。在 src 之外做。哦,当你上传时这样做:
router.route().handler(
BodyHandler.create()
.setUploadsDirectory("image-uploads")
.setBodyLimit(400 * KB)
.setMergeFormAttributes(true)
);
这样setUploadsDirectory
指向我放数据的src外的文件夹