首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >上传的文件无法保存,Java -泽西中没有抛出异常。

上传的文件无法保存,Java -泽西中没有抛出异常。
EN

Stack Overflow用户
提问于 2017-02-21 00:37:46
回答 1查看 222关注 0票数 0

我正在尝试将一个文件上传到部署在Tomcat服务器上的RESTful泽西web服务,它是一个接收上传文件的多部分文件。它在Windows操作系统上完全正确,但在Linux上,该文件无法保存,也不例外地从以下保存方法引发:

代码语言:javascript
复制
@Consumes(MediaType.MULTIPART_FORM_DATA)
public Response uploadProductImage(
        @FormDataParam("file") final InputStream uploadedInputStream,
        @FormDataParam("file") final FormDataContentDisposition cdh,
        @FormDataParam("file") final FormDataBodyPart body
) {
    FileManager fileManager = new FileManager();
    String fileName;

    try {
        int read = 0;
        byte[] bytes = new byte[1024];
        OutputStream out = new FileOutputStream(new File("/home/files"));

        while ((read = uploadedInputStream.read(bytes)) != -1) {
            out.write(bytes, 0, read);
        }
        out.flush();
        out.close();
    } catch (IOException e) {

        e.printStackTrace();
    }

    return Response.status(Response.Status.CREATED).entity(gson.toJson(cdh.getName())).build();
}

多部分变量已经在web.xml文件中声明为:

代码语言:javascript
复制
<init-param>
        <param-name>jersey.config.server.provider.classnames</param-name>
        <param-value>org.glassfish.jersey.media.multipart.MultiPartFeature</param-value>
    </init-param>

如代码所示,目标路径是"/home/files“。

我确信该路径是存在的,并且我已经尝试将目标文件的所有者更改为tomcat组,并将所有权限授予该路径,但没有任何结果。谢谢你的帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-03-01 09:32:44

因此,在进行此操作之后,我发现文件写入失败或权限错误不会作为异常抛出,代码将正常工作,在本例中,解决此类问题的方法如下:

  1. 由于路径位于war主体之外,因此必须在tomcat目录中的server.xml文件中指示路径。
  2. 目录组必须与Tomcat组相同,可以通过linux终端中的chgrp命令进行更改。
  3. 必须在linux中使用chmod命令向目录的组授予权限。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42356669

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档