服务器上传文件后怎样获取返回的URL? (什么服务器上传返回url)
随着互联网技术的飞速发展,越来越多的应用程序需要场景下服务器上传文件,而且上传成功后需要获得一个可访问的URL地址,方便用户使用。这里将对如何在JavaEE应用程序中上传文件后获取返回的URL地址做一个详细的说明。
一、上传文件
在JavaEE中,上传文件一般有两种方式:一种是基于Servlet API的方式,一种是使用第三方库来简化上传流程。本文将基于第二种方式的核心库——commons-fileupload(已停止维护)和Servlet 3.0规范中集成的multipart解析器(功能与commons-fileupload相似,但是更方便),来进行上传文件。
1、使用commons-fileupload
commons-fileupload是Apache组织下的一个文件上传的Java库,可以方便地使用Java语言解析multipart/form-data格式提交上来的数据(比如上传文件)。在使用前需要将其下载并导入到项目中。
具体代码如下:
“`java
public static String uploadFile(CommonsMultipartFile file) {
String originalFileName = file.getOriginalFilename();
String suffix = originalFileName.substring(originalFileName.lastIndexOf(“.”));
String fileName = UUID.randomUUID().toString() + suffix;
String uploadFolder = “upload/”;
File dest = new File(uploadFolder + fileName);
try {
// 保存文件
file.transferTo(dest);
// 返回文件的访问地址
return uploadFolder + fileName;
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
“`
2、使用Servlet 3.0规范中集成的multipart解析器
Servlet 3.0规范中提供了一种快捷的解析multipart/form-data格式的方法,只需在Servlet中添加注解“@MultipartConfig”,即可实现上传文件。
具体代码如下:
“`java
public class FileUploadServlet extends HttpServlet {
@Override
@MultipartConfig
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
Part part = req.getPart(“file”);
String fileName = part.getSubmittedFileName();
String suffix = fileName.substring(fileName.lastIndexOf(“.”));
fileName = UUID.randomUUID().toString() + suffix;
String uploadFolder = “upload/”;
File dest = new File(uploadFolder + fileName);
part.write(uploadFolder + fileName);
resp.getWriter().print(uploadFolder + fileName);
}
}
“`
二、获取URL
获取上传文件后的URL地址需要将服务器上的存储路径转换为对外访问的URL地址。具体做法有两种:
1、使用虚拟目录
在应用程序中,可以通过配置虚拟目录来映射上传文件所在的目录,并指定虚拟目录的URL,使得外部可以通过URL直接访问到上传的文件。
具体代码如下:
“`xml
class=”org.springframework.web.servlet.handler.SimpleUrlHandlerMapping”>
resourceController
class=”org.springframework.web.servlet.mvc.UrlFilenameViewController”/>
class=”org.springframework.web.servlet.mvc.ParameterizableViewController”>
“`
上述代码实现了将虚拟目录“/upload/”映射到实际存储文件所在目录的功能,外部可以通过“http://xx.com/upload/fileName”访问上传的文件。
2、构造URL
通过在Java代码中构造URL的方式,可以将服务器上的文件路径转换为对外访问的URL地址。
具体代码如下:
“`java
public static String getFileUrl(String path, String host) {
StringBuffer = new StringBuffer();
.append(host);
.append(“/file/”);
.append(path.substring(path.lastIndexOf(“/”) + 1));
return .toString();
}
“`
上述代码实现了将存储文件的路径转换为外部访问URL的功能,外部可以通过“http://xx.com/file/fileName”访问上传的文件。
通过本篇文章的介绍,可以看到上传文件后获取返回的URL实际上比较简单,只需要实现上传文件和构造URL两个步骤,就可以将上传的文件对外提供访问服务。但需要注意的是,在文件上传后,应该对文件进行存储管理,防止文件损坏或丢失等情况的发生,保证文件的可靠性和安全性。