对于php';s readfile函数?
情况:对于php';s readfile函数?,php,xml,tcl,Php,Xml,Tcl,情况: 设想两台服务器A和B。服务器B只输出一个PDF文件,该文件可以很好地显示从通过url参数传递给它的任何xml字符串检索到的信息。服务器A的工作是构建一个xml字符串,将该xml字符串作为参数附加到url(指向服务器B上的代码),然后使用php的readfile()函数调用url 问题: 在TCL中是否有同样的方法(在远程服务器上读取文件并输出到浏览器?TCL读取文件等效于文件 但是,如果启用了fopen包装器,那么PHP readfile函数似乎有一个从URL读取文件的选项 因此,在这种
设想两台服务器A和B。服务器B只输出一个PDF文件,该文件可以很好地显示从通过url参数传递给它的任何xml字符串检索到的信息。服务器A的工作是构建一个xml字符串,将该xml字符串作为参数附加到url(指向服务器B上的代码),然后使用php的readfile()函数调用url 问题:
在TCL中是否有同样的方法(在远程服务器上读取文件并输出到浏览器?TCL读取文件等效于文件 但是,如果启用了fopen包装器,那么PHP readfile函数似乎有一个从URL读取文件的选项
因此,在这种情况下,您需要使用HTTP客户端。试一试,这里有一个如何使用它的示例如果您的脚本在其标准输出通道(或假装)上进行输出,那么您可以使用Tcl http包的一些额外技巧,以便将数据保留在操作系统层,而不是直接在代码中拖动:
package require http 2
set url "http://example.org/getpdf/fromxml"
set data "<example>this might be your xml</example>"
# Generate headers, based on example from PHP readfile() page
puts "Content-Description: File Transfer"
puts "Content-Type: application/pdf"
puts "Content-Disposition: attachment; filename=example.pdf"
puts "Content-Transfer-Encoding: binary"
puts "Expires: 0"
puts "Cache-Control: must-revalidate, post-check=0, pre-check=0"
puts "Pragma: public"
# No content length; data streamed from elsewhere
puts ""; # End of headers!
set tok [http::geturl $url -query $data -type text/xml -channel stdout]
# You ought to check for errors here I suppose...
http::cleanup $tok
包需要http 2
设置url“http://example.org/getpdf/fromxml"
设置数据“这可能是您的xml”
#根据PHP readfile()页面中的示例生成标题
放入“内容描述:文件传输”
放入“内容类型:应用程序/pdf”
放置“内容处置:附件;文件名=example.pdf”
放入“内容传输编码:二进制”
放入“过期:0”
放置“缓存控制:必须重新验证,后检查=0,预检查=0”
将“Pragma:public”放入
#无内容长度;从别处传来的数据
将“;#标题结束!
set tok[http::geturl$url-query$data-type text/xml-channel stdout]
#我想你应该在这里检查错误。。。
http::cleanup$tok
这是假设从远程主机获取是POST,因此
-query
选项的默认处理是合适的。因为我们在请求中发送了一个实体,所以它不是GET(也肯定不是PUT…)非常有用的答案。谢谢。我想说的是,Tcl确实将该功能分解为各个部分(即,open
与read
/fcopy
)。