java 怎么向nginx web服务器传输文件

java 怎么向nginx web服务器传输文件,第1张

搭建项目部署的环境

购买服务器

首先需要去阿里云购买服务器。本人购买的是Windows Server 2008,刚开始购买了基于Linux的各种系统(Ubuntu、CentOS、AliyunLinx、Debian),由于没有Linux *** 作基础,最后都没有鼓捣成功,还是先用Windows Server练练手,等了解了大体流程之后在迁移到Linux上。这是我购买的阿里云ECS实例

2

之后使用Windows *** 作系统自带的“远程桌面连接”工具直接连接到远程服务器:

连接成功之后就会进入到熟悉的Windows *** 作系统的桌面了,之后就可以安装各种部署的软件,如JDK、MySQL Database、Tomcat等常用的工具,和在本机上 *** 作并无不同。

3

购买域名

服务器可以正常访问了,那么接下来就需要购置一个域名,通过域名即可跳转到相应的服务器IP,进而让所有的人都可以访问。

由于我的服务器是在阿里云购买的,阿里云和万网合并了,那么直接在阿里云中就可以一站式搞定。

4

stevejrong.top即我购买的域名。

选择一个域名后,点击“解析”以将域名映射到刚才开通的服务器上:

这里万网做了详细的介绍,在此就不多讲如何映射了。

5

域名备案

要想真正让所有人都能访问网站,那么就需要备案。由于服务器是在阿里云购置的,而阿里云和万网的服务现在已经合并,所以可以轻松申请备案。

部署项目

域名和服务器都准备好了,那么现在可以发布项目了。

这里我采用了Nginx反向代理服务器和Tomcat容器组合共同来支撑整个网站的运行。Nginx负责拦截并转发客户端发来的请求,它并不做页面的解析等工作,这些工作都交给Tomcat去处理,因为Nginx擅长处理请求,是一个高性能的反向代理服务器,它几乎没有处理Servlet请求的能力,所以要配合一个能够处理Servlet的容器共同协作,当然,Servlet容器有很多,如Resin、JBoss、Tomcat、GlassFish等等,选择Servlet容器就因人而异了,看自己喜欢用什么,还有一些适应的场景和环境。没有最好的,只有最适合的。Tomcat也未必最垃圾,只是看 *** 作者的水平,能否合理优化是一个难题

安装和配置Nginx

解压后得到如下几个文件和文件夹:

打开conf目录下的nginx.conf文件,这个文件是Nginx服务器的配置文件:

配置代码和解释如下:

#user nobody

#工作进程数

worker_processes 2

#错误日志

#error_log logs/error.log

#error_log logs/error.log notice

#error_log logs/error.log info

#进程保存文件

#pidlogs/nginx.pid

#等待事件

events {

#每个进程的最大连接数(最大连接数=连接数 * 进程数)

worker_connections 2048

}

http {

#文件扩展名和文件类型映射

include mime.types

#默认文件类型

default_type application/octet-stream

#日志的输出格式

#log_format main '$remote_addr - $remote_user [$time_local] "$request" '

# '$status $body_bytes_sent "$http_referer" '

# '"$http_user_agent" "$http_x_forwarded_for"'

#请求日志的保存位置

#access_log logs/access.log main

#是否开启发送文件支持

sendfileon

#tcp_nopush on

#活动连接超时时间

#keepalive_timeout 0

keepalive_timeout 65

#是否开启gzip压缩支持

#gzip on

#第一个虚拟主机

server {

#监听到的端口

listen 80

#主机名称

server_name www.stevejrong.top

#设置字符编码格式

#charset koi8-r

#本地虚拟主机的访问日志

#access_log logs/host.access.log main

因为有个上传大文件的功能,修改了springboot 的yml配置文件中的上传配置文件的参数

 maxHttpHeaderSize: 102400000

 maxHttpPostSize: 102400000

无法打开网站,各种js,css资源文件加载不出来报错404,一开始一直检查tomcat应用,但在本地环境和测试内网环境单tomcat都ok,后怀疑

是dc/os配置问题,然后各种上传镜像修改启动应用的服务器,还是不行。

解决办法

https://blog.csdn.net/webnoties/article/details/17266651

通过设置nginx的client_max_body_size解决nginx+java上传大文件的问题: 

用nginx来做webserver的时,上传大文件时需要特别注意client_max_body_size这个参数,否则会中断在nginx的请求中是无法记录到访问的. 

但是还是不行,因为的webserver用的是nginx, google了一下,发现在nginx的conf中添加了一个参数: 

默认是1M,需要增大的话。 

在nginx.conf中增加一句 

client_max_body_size 500m 

重启即可 

500m表示最大上传500M,需要多大设置多大。

最后发现原因就是 用nginx来做webserver的时,上传大文件时需要特别注意client_max_body_size这个参数,否则会中断在nginx的请求中是无法记录到访问的. 

我有一段上传图片的代码,并且可以根据实际,按月或按天等,生成存放图片的文件夹

首先在JSP上放一个FILE的标签这些我都不说了,你也一定明白,我直接把处理过程给你发过去

我把其中存到数据库中的内容删除了,你改一下就能用

/**

*

* 上传图片

* @param servlet

* @param request

* @param response

* @return

* @throws Exception

*/

//这里我是同步上传的,你随意

public synchronized String importPic(HttpServlet servlet, HttpServletRequest request,HttpServletResponse response) throws Exception {

SimpleDateFormat formatDate = new SimpleDateFormat("yyyyMM")

Date nowtime=new Date()

String formatnowtime=formatDate.format(nowtime)

File root = new File(request.getRealPath("/")+"uploadfile/images/"+formatnowtime+"/")//应保证在根目录中有此目录的存在 如果没有,下面则上创建新的文件夹

if(!root.isDirectory())

{

System.out.println("创建新文件夹成功"+formatnowtime)

root.mkdir()

}

int returnflag = 0

SmartUpload mySmartUpload =new SmartUpload()

int file_size_max=1024000

String ext=""

String url="uploadfile/images/"+formatnowtime+"/"

// 只允许上载此类文件

try{

// 初始化

mySmartUpload.initialize(servlet.getServletConfig(),request,response)

mySmartUpload.setAllowedFilesList("jpg,gif,bmp,jpeg,png,JPG")

// 上载文件

mySmartUpload.upload()

} catch (Exception e){

response.sendRedirect()//返回页面

}

com.jspsmart.upload.File myFile = mySmartUpload.getFiles().getFile(0)

if (myFile.isMissing()){ //没有选择图片做提示!

returnflag = 3

}else{

String myFileName=myFile.getFileName()//取得上载的文件的文件名

ext= myFile.getFileExt() //取得后缀名

if(ext.equals("jpg")||ext.equals("gif")||ext.equals("bmp")||ext.equals("jpeg")||ext.equals("png")||ext.equals("JPG")){ //jpeg,png不能上传!)

int file_size=myFile.getSize()//取得文件的大小

String saveurl=""

if(file_size<file_size_max){

try{

//我上面说到,把 *** 作数据库的代友删除了,这里就应该是判断,你的图片是不是已经存在了,存在要怎么处理,不存在要怎么处了,就是你的事了}

//更改文件名,取得当前上传时间的毫秒数值

Calendar calendar = Calendar.getInstance()

//String filename = String.valueOf(calendar.getTimeInMillis())

String did= contractBean.getMaxSeq("MULTIMEDIA_SEQ")

String filename = did

String flag = "0"

String path = request.getRealPath("/")+url

String ename = myFile.getFileExt()

//.toLowerCase()转换大小写

saveurl=request.getRealPath("/")+url

saveurl+=filename+"."+ext //保存路径

myFile.saveAs(saveurl,mySmartUpload.SAVE_PHYSICAL)

//将图片信息插入到数据库中

// ------上传完成,开始生成缩略图-----

java.io.File file = new java.io.File(saveurl) //读入刚才上传的文件

String newurl=request.getRealPath("/")+url+filename+"_min."+ext //新的缩略图保存地址

Image src = javax.imageio.ImageIO.read(file)//构造Image对象

float tagsize=200

int old_w=src.getWidth(null)

int old_h=src.getHeight(null)

int new_w=0

int new_h=0

int tempsize

float tempdouble

if(old_w>old_h){

tempdouble=old_w/tagsize

}else{

tempdouble=old_h/tagsize

}

// new_w=Math.round(old_w/tempdouble)

// new_h=Math.round(old_h/tempdouble)//计算新图长宽

new_w=150

new_h=110//计算新图长宽

BufferedImage tag = new BufferedImage(new_w,new_h,BufferedImage.TYPE_INT_RGB)

tag.getGraphics().drawImage(src,0,0,new_w,new_h,null) //绘制缩小后的图

FileOutputStream newimage=new FileOutputStream(newurl) //输出到文件流

JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(newimage)

encoder.encode(tag)//近JPEG编码

newimage.close()

returnflag = 1

}else{

returnflag = 0

System.out.println("('上传文件大小不能超过"+(file_size_max/1000)+"K')")

}

}else{

returnflag = 2

}

}

response.sendRedirect()

return "11"

}

如果对您有帮助,请记得采纳为满意答案,谢谢!祝您生活愉快!

vaela


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/11733886.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-18
下一篇 2023-05-18

发表评论

登录后才能评论

评论列表(0条)

保存