java 上传文件接口_Java接口实现文件上传

java 上传文件接口_Java接口实现文件上传因工作需要,在后台管理页面加入一个上传文件的模块,虽然接口的代码很简单,但实现期间遇到了一些比较有趣的坑,特记录下来。需求实现文件上传,并提供一个可供下载的路径。想法文件上传代码暂且不谈,先说说文件放在服务器什么位置比较合适。我首先想到的是两个地方:tomcat的webapps/ROOT目录下,如果放在这个目录下,数量少了还好,一旦数量多了,必定会影响tomcat本身的运行速度。这个虽然可用但不可…

大家好,又见面了,我是你们的朋友全栈君。

因工作需要,在后台管理页面加入一个上传文件的模块,虽然接口的代码很简单,但实现期间遇到了一些比较有趣的坑,特记录下来。

需求

实现文件上传,并提供一个可供下载的路径。

想法

文件上传代码暂且不谈,先说说文件放在服务器什么位置比较合适。我首先想到的是两个地方:

tomcat的webapps/ROOT目录下,如果放在这个目录下,数量少了还好,一旦数量多了,必定会影响tomcat本身的运行速度。这个虽然可用但不可行。nginx的静态目录下,放在这个目录下则不会有什么影响。只需要在nginx中进行相应的配置即可。可用也可行。

java代码实现:

由于我们使用的是SSM框架,首先需要配置文件上传解析器。

虽然简单,但依旧遵从三层架构,Controller实现如下:

@Controller

@RequestMapping(“/upload”)

public class UploadApkController {

@Resource

private UploadApkService uploadApkService;

/**

* 上传Apk文件

* @param file

* @return

*/

@RequestMapping(“/uploadApk”)

@ResponseBody

public Map uploadApk(@RequestParam(“file”) CommonsMultipartFile file){

Map resultMap = new HashMap<>();

try {

uploadApkService.uploadApk(file);

resultMap.put(“msg”, “上传成功”);

} catch (IOException e) {

e.printStackTrace();

resultMap.put(“msg”, “上传失败”);

}

return resultMap;

}

}

Service接口:

public interface UploadApkService {

/**

* 上传Apk文件

* @param file

* @throws IOException

*/

public void uploadApk(CommonsMultipartFile file) throws IOException;

}

Service实现类:

public class UploadApkServiceImpl implements UploadApkService {

/**

* 上传Apk文件

* @param file

* @throws IOException

*/

public void uploadApk(CommonsMultipartFile file) throws IOException {

//这是我的nginx静态路径,使用时需改为自己的对应路径

String path=”/data2/fphone/static/apk/”+file.getOriginalFilename();

File newFile=new File(path);

file.transferTo(newFile);

}

}

代码部分完成。

对接口进行测试。

这是之前测试的截图,状态为OK即为上传成功。 下面进行下载测试,输入nginx静态地址,显示如下:  出现问题。思考后认为可能是权限不够,进入nginx静态目录下,执行命令:

ls -all apk

显示如下:  发现zrx.apk权限为640,对于其他人并没有读的权限。我nginx的配置如下:  所以通过nginx并没有读取这个文件的权限。有些人可能会说将nginx的user调整为root,但我建议不要给nginx太大的权限。所以采用另一种方式解决这个问题。

解决权限问题

既然不决定提高nginx的权限,那么只能将上传文件的权限由640改为644。查看tomcat的bin目录下的catalina.sh文件:  将这里的0027改为0022即可,0022代表权限为644。 权限修改完成,再次进行测试,调用接口上传文件,检查文件权限:

发现文件权限为644。继续尝试输入路径进行下载:  文件果然开始正常下载,验证了我们的思路是正确的。到此问题解决。如果有什么不明白或者发现问题的,欢迎评论或者私信我,谢谢各位!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/146606.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 汉罗塔的一般解决方法是什么_汉诺塔最快的方法

    汉罗塔的一般解决方法是什么_汉诺塔最快的方法这里主要是汉罗塔的递归求解n个盘子的总步数,和递归每一步盘子的步骤。

    2022年10月12日
  • matlabfprintf用法_matlab中compose函数

    matlabfprintf用法_matlab中compose函数fprintf函数的运用(组图)08-19栏目:技术TAG:fprintffprintffprintf()用于文件操作#includeintfprintf(FILE*stream,constchar*format,…);copyrightwww.jhua.orgfprintf()函数根据指定的format(格式)发送信息(参数)到由stream(流)指定的文件.因此fpr…

  • 惠普电脑蓝屏开不了机怎么解决_hp服务器售后电话800

    惠普电脑蓝屏开不了机怎么解决_hp服务器售后电话800在日常生活中,电脑出现蓝屏的无法启动的问题很常见,怎么处理电脑蓝屏问题呢?下面是小编为大家整理的关于hp电脑蓝屏后无法启动的相关资料,希望对您有所帮助!hp电脑蓝屏后无法启动的解决方法很多时候电脑蓝屏是因为电脑的硬件,电脑关机完成后,我们可以断开电脑的电源,然后对我们的内存条擦拭后,从新装机到我们的电脑主板上。清理电脑的各项主板接口也是必须的,我们可以根据顺序,依次清理电脑的各个接口,完成后即可。…

  • 版本控制命名规范

    版本控制命名规范

  • 实现带查询功能的Combox控件

    实现带查询功能的Combox控件

    2021年11月30日
  • 电子设计竞赛控制组——完整旋转倒立摆程序

    电子设计竞赛控制组——完整旋转倒立摆程序以前也想过要写博客,但是却一直没有付诸于实践,作为第一篇原创,我还是选择将以前电赛时的作品拿出来,毕竟当初可是花费了好多心血的,汗~旋转倒立摆是控制组校内赛练手的题目,需要对PID非常熟悉才能调好参数,以下代码是自己搭建好结构后调试出来的程序,其中的参数会根据不同的结构作出调整。结构组成:K60开发板(带液晶屏和按键),角度编码器,直流减速电机(带编码器),12V的电机驱动,金属摆臂,…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号