linux下如何实现web上传并显示图片

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux下如何实现web上传并显示图片相关的知识,希望对你有一定的参考价值。

我想将图片通过web上传到linux服务器上,但传上去后并不能浏览到,图片路径我使用绝对路径的,目录及图片权限都是0777,但是在浏览器还是不能显示出图片,请高手帮帮忙!

服务器配置
1.如果你安装的Linux版本中带用Apache的话,就在选择所要安装的服务
器的时候,将httpd这个服务选上,Linux安装程序将自动完成Apache的安装工
作,并做好基本的配置。

  2.使用可执行文件软件包,这比较适合那些对编译工作不是太熟悉的初级
用户,因为它相对比较简单。

  下载软件包apache_1.2.4.e.tar.gz

  tar xvzf apache_1.2.4.e.tar.gz

  这就完成了安装工作,简单吧!

  如果你使用的是RedHat Linux的话,你也可以下载apache_1.2.4.rpm软件
安装包,然后使用rpm -ivh   apache_1.2.4.rpm命令安装。

  3.如果你想把Apache服务器充分利用起来的话,就一定要自己编译
Apache定制其功能。

下载包含Apache源代码的软件包apache_1.2.4.tar.gz; 然后用tar命令将它解
开; 将当前目录改变为Apache源代码发行版的src目录; 将配置样本文件
(Configuration.tmpl)复制为Configuration文件;

编辑Configuration文件中的配置选项:

Makefile配置选项:一些编译选项:

. "CC="一行指定用什么编译软件编译,一般为"CC=gcc";

. 如果需要将额外的标志(参数)指定给C编译软件,可以使用:

EXTRA_CFLAGS=

EXTRA_LFLAGS=

. 如果系统需要特殊的库和包含文件,可以在这里指定它们:

EXTRA_LIBS=

EXTRA_INCLUDES=

. 如果你要改变代码优化设置的话,你须将下面一句去掉注释,然

后改成你所需要的值:

#OPTIM=-O2

Rule配置选项:用来决定需要什么功能,一般情况下无需改变。

模块配置:模块是Apache的组成部分,它为Apache内核增加新功能。通过使用
模块配置,可以自定义在Apache服务器中需要什么功能,这个部分也是Apache
灵活性的表现。模块配置行如下所示:

AddModule modules/standard/mod_env.o

如果你需要Apache服务器具备什么功能,就将那个模块用AddModule语句加到配
置文件Configuration中去。

下表列出了Apache的模块功能:

模块名 功能 缺省

mod_access 提供基于主机的访问控制命令 y

mod_actions 能够运行基于MIME类型的CGI脚本或HTTP请求方法 y

mod_alias 能执行URL重定向服务 y

mod_asis 使文档能在没有HTTP头标的情况下被发送到客户端 y

mod_auth 支持使用存储在文本文件中的用户名、口令实现认证 y

mod_auth_dbm 支持使用DBM文件存储基本HTTP认证 n

mod_auth_mysql 支持使用MySQL数据库实现基本HTTP认证 n

mod_auth_anon 允许以匿名方式访问需要认证的区域 y

mod_auth_external支持使用第三方认证 n

mod_autoindex 当缺少索引文件时,自动生成动态目录列表 y

mod_cern_meta 提供对元信息的支持 n

mod_cgi 支持CGI y

mod_dir 能够重定向任何对不包括尾部斜杠字符命令的请求 y

mod_env 使你能够将环境变量传递给CGI或SSI脚本 n

mod_expires 让你确定Apache在服务器响应请求时如何处理Expires y

mod_headers 能够操作HTTP应答头标 y

mod_imap 提供图形映射支持 n

mod_include 使支持SSI n

mod_info 对服务器配置提供了全面的描述 y

mod_log_agent 允许在单独的日志文件中存储用户代理的信息 n

mod_log_config 支持记录日志 y

mod_log_referer 提供了将请求中的Referer头标写入日志的功能 n

mod_mime 用来向客户端提供有关文档的元信息 y

mod_negotiation 提供了对内容协商的支持 y

mod_setenvif 使你能够创建定制环境变量 y

mod_speling 使你能够处理含有拼写错误或大小写错误的URL请求 n

mod_status 允许管理员通过WEB管理Apache y

mod_unique_id 为每个请求提供在非常特殊的条件下保证是唯一的标识 n

在src目录下执行:". /configure";

编译Apache:执行命令"make";

根据机器性能的不同,经历一段5-30分钟的编译,就大功告成了。

将编译好的可执行文件httpd复制到/etc/httpd/bin目录下;

将Apache发行版的配置文件:access.conf、httpd.conf、mime.types、
srm.conf文件复制到/etc/httpd/conf目录下。到此为止,安装完成。
参考技术A 通过web传到linux服务器
这样相当于共享文件夹一样
并不是以网页的形式

。浏览器访问服务器后面加路径
最后点击打开。
参考技术B 显示图片要用标签的吧~~这是html的内容
另外图片必须是浏览器支持的类型~~这是浏览器软件的问题
参考技术C 问题描述不清楚,你用什么上传到什么目录用什么webserver都未知,等你把问题描述清楚了你也就知道改怎么办了 参考技术D 我也是这样 用 Xshell将图片上传到了服务器 写写了HTML网页 但是图片就是不能显示 在Windows上又可以!

java web开发,上传图片并读取

要求:
1.上传部分:使用javascript对文件类型进行简单判断,然后上传。上传可以先不写入数据库,可以是把图片新建到某个文件夹中。
2.上传后从文件夹读取,做成类似QQ空间相册一样,点击图片左边箭头上一张,右边箭头下一张,头尾两张不能点。并且图片内容变换时,页面地址栏地址是不变的。
= = 谁说上传的文件是统一命名了。。。

java web开发中,使用文件操作类来上传图片并读取,如下代码:

 * @desc: 图片处理工具
 * @author: bingye
 * @createTime: 2015-3-17 下午04:25:32
 * @version: v1.0
 */
public class ImageUtil 
 
    /**
    * 将图片写到客户端
    * @author: bingye
    * @createTime: 2015-3-17 下午04:36:04
    * @history:
    * @param image
    * @param response void
    */
    public static void writeImage(byte[] image,HttpServletResponse response)
        if(image==null)
            return;
        
        byte[] buffer=new byte[1024];
        InputStream is=null;
        OutputStream os=null;
        try 
            is=new ByteArrayInputStream(image);
            os=response.getOutputStream();
            while(is.read(buffer)!=-1)
                os.write(buffer);
                os.flush();
            
         catch (IOException e) 
            e.printStackTrace();
         finally
            try 
                if(is!=null)is.close();
                if(os!=null)os.close();
             catch (IOException e) 
                e.printStackTrace();
            
        
    
     
    /**
    * 获取指定路劲图片
    * @author: bingye
    * @createTime: 2015-3-21 上午10:50:44
    * @param filePath
    * @param response void
    */
    public static void writeImage(String filePath,HttpServletResponse response)
        File imageFile=new File(filePath); 
        if(imageFile!=null && imageFile.exists())
            byte[] buffer=new byte[1024];
            InputStream is=null;
            OutputStream os=null;
            try 
                is=new FileInputStream(imageFile);
                os=response.getOutputStream();
                while(is.read(buffer)!=-1)
                    os.write(buffer);
                    os.flush();
                
             catch (FileNotFoundException e) 
                e.printStackTrace();
             catch (IOException e) 
                e.printStackTrace();
             finally
                try 
                    if(is!=null)is.close();
                    if(os!=null)os.close();
                 catch (IOException e) 
                    e.printStackTrace();
                
            
        
    
     
    /**
    * 图片上传到文件夹
    * @author: bingye
    * @createTime: 2015-3-20 下午08:07:25
    * @param file
    * @param savePath
    * @return boolean
    */
    public static ResultDto uploadToLocal(CommonsMultipartFile file,String savePath)
        if(file!=null && !file.isEmpty())
            //获取文件名称
            String fileName=file.getOriginalFilename();
            //获取后缀名
            String suffixName=fileName.substring(fileName.indexOf(".")+1);
            //新名称
            String newFileName=System.currentTimeMillis()+"."+suffixName;
            //新文件路劲
            String filePath=savePath+newFileName;
            //获取存储文件路径
            File fileDir=new File(savePath);
            if(!fileDir.exists())
                //如果文件夹没有:新建
                fileDir.mkdirs();
            
            FileOutputStream fos=null;
            try 
                fos=new FileOutputStream(filePath);
                fos.write(file.getBytes());
                fos.flush();
                return ResultUtil.success("UPLOAD_SUCCESS", URLEncoder.encode(newFileName,"utf-8"));
             catch (Exception e) 
                e.printStackTrace();
                return ResultUtil.fail("UPLOAD_ERROR");
             finally
                try 
                    if(fos!=null)
                        fos.close();
                    
                 catch (IOException e) 
                    e.printStackTrace();
                    return ResultUtil.fail("UPLOAD_ERROR");
                
            
        
        return ResultUtil.fail("UPLOAD_ERROR");
    
     
     
     
参考技术A struts2的文件上传一定容易到让你吃惊!至于第2的那种效果,用JavaScript实现本回答被提问者采纳 参考技术B 上传的话简单:
用smartUpload
新建doUpload.jsp
<%@ page contentType="text/html; charset=gb2312" language="java"%>
<%@ page import="com.jspsmart.upload.*"%>
<jsp:directive.page import="java.io.File" />
<HTML>
<BODY>
<%

//参数path:web发布根路径。
String path = request.getSession().getServletContext().getRealPath("");
//参数savePath:上传文件存放路径。
String savePath = "\\temp\\";
savePath = path + savePath;
//这里的路径可以自己设定
//如果savePath不存在,就新建一个文件夹
File tempPath = new File(savePath);
if (!tempPath.exists())
tempPath.mkdir();


// 新建一个SmartUpload对象
SmartUpload su = new SmartUpload();
// 上传初始化
su.initialize(pageContext);
// 设定上传限制
// 1.限制每个上传文件的最大长度。
// su.setMaxFileSize(10000);
// 2.限制总上传数据的长度。
// su.setTotalMaxFileSize(20000);
// 3.设定允许上传的文件(通过扩展名限制),仅允许doc,txt文件。
// su.setAllowedFilesList("doc,txt");
// 4.设定禁止上传的文件(通过扩展名限制),禁止上传带有exe,bat,jsp,htm,html扩展名的文件和没有扩展名的文件。
// su.setDeniedFilesList("exe,bat,jsp,htm,html,,");
// 上传文件
su.upload();
// 将上传文件全部保存到指定目录
int count = su.save(savePath);
//out.println(count + "个文件!<br>");
// 逐一提取上传文件信息,同时可保存文件。
com.jspsmart.upload.File file = su.getFiles().getFile(0);
// 若文件不存在则继续

%>
</BODY>
</HTML>
2,读取文件就更简单了
假如你所有的文件都存到指定路径下
文件命名规则比如“imge1,imge2..........”很多
frame.jsp

<body>
<div id="frame">
<input name=lastime type=Button value="<--" onclick="lastpic()">//上一张图片
<imge id="picture" src="image1.jpg"> //默认第一张图片
<input name="index" value=1 type=hidden>
<input name=lastime type=Button value="-->"onclick="nextpic()">//下一张图片

</div>
</body>

<script type="text/javascript">
function lastpic()

var index = document.getElementById("index").value
if(index>1)
document.getElementById("index").src = "image"+(index-1)+".jpg";//上一张图片


function nextpic()

var index = document.getElementById("index").value
if( document.getElementById("image"+(index+1)+".jpg")
document.getElementById("index").src = "image"+(index+1)+".jpg";//下一张图片


</script>
参考技术C 按照你的想法效率会很低。
可以考虑用数据库的BLOB类型

以上是关于linux下如何实现web上传并显示图片的主要内容,如果未能解决你的问题,请参考以下文章

java实现图片上传至服务器并显示,如何做?

java web开发,上传图片并读取

java web开发中 用户上传头像如何实现,尽量详细些。。。。谢谢各位大侠!

用JavaScript实现“上传并预览图片”时,默认浏览器Firefox无法获得图片路径,显示fakepath,如何解决?

php制作后台,上传图片,点击上传,弹出一个图片库,从图片库里面选择图片,如何实现?

Android实现本地上传图片并设置为圆形头像