小弟php菜鸟一个,最近项目中遇到一个问题,用户访问网站时,用户点击某个按钮时,会在用户本地临时文件夹下生成一个pdf文件(文件路径已知且无法改变),现在需要在用户点击按钮后,在本地生成pdf,并把pdf文件上传到服务器指定文件夹,小弟不知道怎么直接上传过去,而不是通过常见的选择文件,然后点击按钮上传。开发语言php。求各位大侠支支招

解决方案 »

  1.   

    用img标签的src属性,引入那个pdf文件,然后通过xhr对象进行ajax(或jquery的ajax方法上传)上传文件。
    (或者试试swfuploaded上传)
      

  2.   


    不好意思,我表述不清,pdf文件是从服务器下载下来,然后对pdf完成电子签章工作,(下载pdf和电子签章用的第三方中间件),但是签章完成后的新的pdf存在了本地临时文件夹下,现在需要签章完了的pdf把服务器上的pdf替换掉(用户点击签章按钮,完成签章,pdf存于本地,替换原来的pdf),现在的问题是如何替换掉服务器上的pdf,不知道这是否可行
      

  3.   

    这个需求是不是可以理解为:如何上传指定本地路径的文件?
    如果是这样的话那么PHP,JS,HTML都是无法实现的。因为JS,HTML,PHP都没有权限来读取客户端硬盘中的文件,必须要借助于控件来实现。你可以在网上找一下相关的控件。
      

  4.   

    请问下有可能用html5实现吗,记得以前有谁提到过…一时想不起来了…
      

  5.   

    找人写个控件,或者网上找个控件改一下吧,改一下就ok了。。单纯的html+js实现不了,不过js最新的版本貌似可以使用File对象,你可以网上找一下,但是这个可能跟浏览器版本有关系,如果用户浏览器版本低,可能执行不了你的最新的js......
      

  6.   

    请问下有可能用html5实现吗,记得以前有谁提到过…一时想不起来了…html5也实现不了,因为浏览器有安全设置,不允许JS访问本地文件。只能借助于控件来实现。
      

  7.   

    楼主试试这个控件:http://www.cnblogs.com/xproer/archive/2010/10/24/1859895.html
    此控件是基于标准HTTP协议实现的文件上传功能。优势是扩展性非常好,整合简单,支持批量上传文件和上传文件夹功能,上传前获取本地文件大小,适合各种简单WEB项目。
    另外一个特点是支持自动上传指定的本地文件。单文件上传演示
    上传本地文件代码
    使用步骤如下:
    1.调用AddFile函数添加本地文件,注意路径需要使用双斜框(\\)
    2.调用PostFirst函数开始上传文件。<div id="divUpload"></div>
    <script type="text/javascript" language="javascript">
         var fileMgr = new HttpUploaderMgr(); window.onload = function()
    {
    fileMgr.LoadTo("divUpload"); //加载并初始化控件
    //添加一个本地文件
    fileMgr.AddFile("D:\\Soft\\QQ2010.exe");
    fileMgr.PostFirst(); };
    </script>
    获取本地文件大小 服务器返回消息:<input id="txtFilePath" type="text" size="50" />
    <div id="divUpload"></div>
    <script type="text/javascript" language="javascript">
    var fileMgr = new HttpUploaderSingleMgr();
    fileMgr.Config["PostUrl"] = "http://localhost:8080/asp.net/upload.aspx";//指定文件上传地址,可以在这里设置文件服务器地址
    fileMgr.LoadTo("divUpload");
    function testFileSize()
    {
        var obj = new ActiveXObject(fileMgr.ActiveX["Partition"]);
        alert(obj.FileSize("D:\\VS2012.SP4.iso"));
    } function testFileLength()
    {
        var obj = new ActiveXObject(fileMgr.ActiveX["Partition"]);
        alert(obj.FileLength("D:\\VS2012.SP4.iso"));
    }
    </script>
    获取MAC地址 <div id="divUpload"></div>
    <script type="text/javascript" language="javascript">
             var fileMgr = new HttpUploaderMgr();
             fileMgr.Config["PostUrl"] = "http://localhost:4854/asp.net/upload.aspx";//设置文件上传地址     $(document).ready(function ()
         { 
    fileMgr.LoadTo("divUpload");//加载并初始化控件
         });     function getMacs()
         {
             var mac = fileMgr.Browser.GetMacs();
             alert(mac[0]);
         }
    </script>
    单文件整合代码:<html xmlns="http://www.w3.org/1999/xhtml" >
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title>单文件上传示例</title>
        <link href="js/up2.css" type="text/css" rel="Stylesheet"/>
        <script src="js/jquery-1.3.2.min.js" type="text/javascript"></script>
        <script src="js/up2-single.js" type="text/javascript" charset="utf-8"></script>
        <script language="javascript" type="text/javascript">
            var fileMgr = new HttpUploaderMgr();        $(document).ready(function ()
            {
                fileMgr.Load();            $("#btnSel").click(function ()
                {
                    fileMgr.postAuto("upPnl"); //
                });            $("#btnPostLoc").click(function ()
                {
                    fileMgr.postLoc("D:\\Soft\\QQ2015.exe", "upPnl"); //
                });
            });
        </script>
    </head>
    <body>
        <p>此页面演示单个文件上传样式</p>
        <div id="upPnl"></div>
        <input id="btnSel" type="button" value="浏览" />
        <input id="btnPostLoc" type="button" value="上传本地文件" />
    </body>
    </html>示例下载:
    cab安装包(x86)
    cab安装包(x64)
    xpi安装包
    crx安装包
    exe安装包
    开发文档
    ASP示例
    ASP.NET示例
    JSP示例
    PHP示例