使用Spring将文件保存到资源目录

我有这个项目结构:

/webapp

/res

/img

/profile.jpg

/WEB-INF

而且我需要将文件保存到res/img/目录。这次我有以下代码:

public String fileUpload(UploadedFile uploadedFile) {

InputStream inputStream = null;

OutputStream outputStream = null;

MultipartFile file = uploadedFile.getFile();

String fileName = file.getOriginalFilename();

File newFile = new File("/res/img/" + fileName);

try {

inputStream = file.getInputStream();

if (!newFile.exists()) {

newFile.createNewFile();

}

outputStream = new FileOutputStream(newFile);

int read = 0;

byte[] bytes = new byte[1024];

while ((read = inputStream.read(bytes)) != -1) {

outputStream.write(bytes, 0, read);

}

} catch (IOException e) {

e.printStackTrace();

}

return newFile.getAbsolutePath();

}

但是它将文件保存到user.dir目录~/Work/Tomcat/bin/。那么如何将文件上传到res目录?

回答:

您实际上不应该在那里上传文件。

如果您使用战争,则重新部署将删除它们。如果它们是临时的,则使用os分配的临时位置。

如果打算在以后发布它们,则选择在服务器上存储文件的位置,并让应用程序知道该位置,然后从该位置保存和加载文件。

如果您尝试动态替换资源(例如html或css模板中引用的图像),然后考虑单独发布外部位置,则可以为此使用mvc:resources,例如:

<mvc:resources mapping="/images/**" location="file:/absolute/path/to/image/dir"/>

然后将文件保存到该位置。这将使其在部署之间更加永久。

为了使用代码将图像保存到该位置,您需要将其添加到bean定义中(假设您使用的是不带注释的xml配置):

<property name="imagesFolder" value="/absolute/path/to/image/dir"/>

并保持代码尽可能相似,将其更改为:

private String imagesFolder;

public void setImagesFolder(String imagesFolder) {

this.imagesFolder = imagesFolder;

}

public String fileUpload(UploadedFile uploadedFile) {

InputStream inputStream = null;

OutputStream outputStream = null;

MultipartFile file = uploadedFile.getFile();

String fileName = file.getOriginalFilename();

File newFile = new File(imagesFolder + fileName);

try {

inputStream = file.getInputStream();

if (!newFile.exists()) {

newFile.createNewFile();

}

outputStream = new FileOutputStream(newFile);

int read = 0;

byte[] bytes = new byte[1024];

while ((read = inputStream.read(bytes)) != -1) {

outputStream.write(bytes, 0, read);

}

} catch (IOException e) {

e.printStackTrace();

}

return newFile.getAbsolutePath();

}

请记住,您需要将/ absolute / path / to / image / dir更改为存在的实际路径,我也建议您查看Spring

Resources文档,以找到一种处理文件和资源的更好方法。

以上是 使用Spring将文件保存到资源目录 的全部内容, 来源链接: utcz.com/qa/428307.html

回到顶部