nginx上传图片
1. 怎么上传图片到nginx服务器
最简单方法,下载SSH客户端,SSH Secure File Transfer Client用这个可以直接上传
2. 如何解决nginx上传大文件的限制
通过设置nginx的client_max_body_size解决nginx+php上传大文件的问题:
用nginx来做webserver的时,上传大文件时需要特别注意client_max_body_size这个参数,否则会中断在nginx的请求中,在php中是无法记录到访问的.
一般上传大文件流程:
首先修改php.ini文件:
file_uploads on 是否允许通过HTTP上传文件的开关。默认为ON即是开
upload_tmp_dir – 文件上传至服务器上存储临时文件的地方,如果没指定就会用系统默认的临时文件夹
upload_max_filesize 8m 望文生意,即允许上传文件大小的最大值。默认为2M
post_max_size 8m 指通过表单POST给PHP的所能接收的最大值,包括表单里的所有值。默认为8M
一般来说,设置好上述四个参数后,在网络正常的情况下,上传<=8M的文件是不成问题的
但如果要上传>8M的大文件的话,只设置上述四项还不一定能行的通。除非你的网络真有100M/S的上传高速,否则你还得继续设置下面的参数。
max_execution_time 600 每个PHP页面运行的最大时间值(秒),默认30秒
max_input_time 600 每个PHP页面接收数据所需的最大时间,默认60秒
memory_limit 8m 每个PHP页面所吃掉的最大内存,默认8M
webserver用的是nginx,在nginx的conf中添加了一个参数:
默认是1M,需要增大的话。
在nginx.conf中增加一句
client_max_body_size 30m;
重启即可
30m表示最大上传30M,需要多大设置多大。
3. nginx负载均衡时上传的图片怎么处理
局域网内可以考虑 rsync + inotify-tools
inotify可以监控文件系统的各种变化,当文件有任何变动时,就触发rsync同步,这样刚好解决了同步数据的实时性问题。
局域网内多台服务器时可以配置Nginx把上传等写操作固定到其中一台PHP-FPM服务器,然后用inotify+rsync同步到其它机器.
比如上传操作定向到服务器192.168.1.10进行处理:
location ^~ /upload.php {
include fastcgi_params;
fastcgi_pass 192.168.1.10:9000;
fastcgi_param SCRIPT_FILENAME /srv/www$fastcgi_script_name;
}
在服务器192.168.1.10上用inotify+rsync同步文件到其他服务器. 除上传外,删除、更改、移动等写操作也要定向到192.168.1.10这台服务器进行处理。
4. java项目如何实现上传图片到项目外部,访问时使用相对于域名的相对路径 系统架构大致是jboss+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
5. nginx 上传文件502
将网上找到的一些和502BadGateway错误有关的问题和排查方法列一下,先从FastCGI配置入手:1.FastCGI进程是否已经启动2.FastCGIworker进程数是否不够运行netstat-anpo|grep“php-cgi”|wc-l判断是否接近FastCGI进程,接近配置文件中设置的数值,表明worker进程数设置太少3.FastCGI执行时间过长根据实际情况调高以下参数值fastcgi_connect_timeout300;fastcgi_send_timeout300;fastcgi_read_timeout300;4.FastCGIBuffer不够nginx和apache一样,有前端缓冲限制,可以调整缓冲参数fastcgi_buffer_size32k;fastcgi_buffers832k;5.ProxyBuffer不够如果你用了Proxying,调整proxy_buffer_size16k;proxy_buffers416k;6.https转发配置错误正确的配置方法
6. 上传文件到nginx服务器很慢怎么解决
也可能是服务器网络和本地网络互联互通的问题。比如您本地是电信宽带。服务器是联通或者其他非电信的。这类可能会出现您的这种情况。
7. nginx怎么配置禁止上传除了图片,html,css等之外格式的文件
上传控件自带过滤类型的属性accept,比如:
<input id="FileUp" type="file" accept=".jpg,.png,.gif,.htm,.html,.css" />
8. Nginx作为上传图片服务器的时候,java.net.SocketException: Permission denied: connect
lnmp架构 直接放nginx的web文件夹中,通过cgi解析php返回给nginx,如果是lnmpa架构,就是多了个apache,nginx负责分发请求,然后apache调用php_mod解析php,最后返回给nginx
如果是负载均衡,nginx分发请求,每个请求可能请求不同的服务器,但是每个服务器的网站程序应该是一致的,并且每个服务器上都部署了php环境和程序,然后返回给请求者nginx输出页面。
9. nginx搭建图片服务器 web应用如何实现图片上传
通过severlet上传图片是可以的,甚至用手工方式上传也可以
因为调用读取这些图片的话,不用调用severlet,直接调用nginx即可
nginx本身就可以实现静态资源的web服务