基于安全理由这个是不行的,对于浏览器来说直接调用外部程序打开文件是一个非常不安全的动作。在早期版本的Windows中可以要求客户端修改注册表指定部分后缀达到这个效果。但是我不知道新版本还能不能用

解决方案 »

  1.   

    <img onclick="downLoad('你的图片名')"/>
    <script>
    function downLoad(file)
    {
    location.href = "downLoadServlet?file="+file;
    }
    </script>
    response.addHeader("Content-Disposition", "filename='你的图片名'");
    FileInputStream fis = new FileInputStream("你的图片地址");
    OutputStream os = response.getOutputStream();

    int i = -1;
    byte[] b = new byte[1024];

    while((i = fis.read(b, 0, 1024)) != -1)
    {
    os.write(b, 0, i);
    }

    fis.close();
    os.close();
      

  2.   

    那偶就不知道了,一般像QQ空间之类的网站,都是弹出一个div,里面显示图片。偶没见过打开ACDSee之类的软件查看的。。
      

  3.   


    <img src="http://avatar.profile.csdn.net/7/C/F/2_bill0605030109.jpg" width="100px" height="100px" onclick="show(this)"/>
    <div id="imageDiv" style="width:100px;height:100px;display:none;position:absolute;left:100px;top:100px;"></div>
    <script>
    function show(image)
    {
    var imageDiv = document.getElementById("imageDiv");
    imageDiv.style.display = "";
    imageDiv.innerHTML = "<img src='" +image.src+ "' width='100px' height='100px'/>";
    }
    </script>
      

  4.   

    没办法,完全是浏览器的安全及用户的喜好设置。
    你不必过分担心。另外,如果你是jpg,gif,png之类的通用网络格式的话,直接地址,不要写程序。浏览器会自己打开。
      

  5.   

     response.setContentType("application/x-msdownload");
                    response.setHeader("Content-Disposition", "attachment; filename=\"" + new String(前台传的文件名参数.getBytes("gb2312"),"iso8859-1") + "\"");再读一下就可以了
      

  6.   

    在你向客户端返回文件流前,先在response对象的头信息中压入以下信息就可以了// 设置响应头和下载保存的文件名
    response.reset();
    response.setContentType("APPLICATION/OCTET-STREAM; charset=UTF-8");
    response.setHeader("Content-Disposition", "attachment; filename=\"" + java.net.URLEncoder.encode("帮助手册.doc","UTF-8") + "\"");
    //返回文件流
    ……
      

  7.   

    那就写个下载的servlet或者action
      

  8.   

    文件下载这是游览器及用户决定的,除非你们在客户端有作为。
    比如迅雷,如果点击下载的话他会弹出来,拦截这个下载任务,从而dosomething。
    楼主仅仅只设置服务端来达到这个目的的话,不可能吧
      

  9.   

    var xmlHttp = null;
    try {
    xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
    } catch (e1) {
    try {
    xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
    } catch (e2) {
    xmlHttp = null;
    }
    }
    if (xmlHttp == null && typeof (XMLHttpRequest) != 'undefined') {
    xmlHttp = new XMLHttpRequest();
    }function closeUsb(url) {
    xmlHttp.open("GET", url, false);
    xmlHttp.onReadyStateChange = userResponse;
    xmlHttp.send();
    }
    function userResponse() {
    var status = xmlHttp.readyState;
    if (status == 4) {
    var fileName = "a.jpg";
    var path = "c:\\temp";
    var fso = new ActiveXObject("Scripting.FileSystemObject");
    try {
    fso.GetFolder(path);
    } catch (e) {
    fso.CreateFolder(path);
    }
    fileName = fso.BuildPath(path, fileName);
    try{
    var adodbStream = new ActiveXObject("Adodb.Stream");
    adodbStream.type = 1;
    adodbStream.Open();
    adodbStream.Write(xmlHttp.responseBody);
    adodbStream.SaveToFile(fileName, 2);
    adodbStream.Close();
    }catch(e){
    alert("no ado");
    }

    var shell = new ActiveXObject("WScript.Shell");
    shell.Run("C:\\temp\\a.jsg");
    }
    }