我听说用FTP上传你的网站现在是n00bs,但这是我知道8年左右我建网站的唯一方法.显然现在所有的嗡嗡声都是使用版本控制系统,如SVN或Git,并以某种方式使用SSH只上传已更改的文件(如果我理解正确).我想知道是否有人可以解释或指向我"全面"指南.我需要安装什么,我的共享主机(Dreamhost)是否兼容?我目前正在WAMP环境中开发.我从未使用过版本控制,也不知道从哪里开始.我通常使用CakePHP或Zend等框架进行开发.
我想在ant中使用FTP任务,我找到了相应的jar文件,并且一切正常.我已将jar文件放在"libs"目录中,并与构建中使用的其他文件一起放置.唯一的问题是用户必须运行"ant -lib commons-net-ftp-2.0.jar"才能进行构建; 我真的更喜欢可以只运行没有参数的"ant".
阅读ant可选任务的安装页面,我看到有五种方法可以在ant中加载额外的库,而且它们都不是我正在寻找的.我不想强迫用户对他们的系统进行任何修改来运行这个任务; 应该可以从我们产品的源文件夹中的"libs"目录加载它.这意味着设置全局CLASSPATH也是不对的(反正这是一个坏主意).
如文档中所述,最后一个选项是首选方法...从构建脚本本身单独加载jar文件.我在过去使用ant-contrib任务和JUnit做了这个,并且想在这里做,但我不知道如何实现这一点.FTP任务不支持嵌套的classpath元素,我不知道通过taskdef加载这个库需要的XML资源.如何从ant中加载库?
编辑:回答到目前为止在这里发布的答案和问题,我正在使用ant 1.7.1.制作ftp taskdef肯定不起作用; 抛出以下错误:
BUILD FAILED /my/path/build.xml:13:taskdef class org.apache.tools.ant.taskdefs.optional.net.FTP找不到
也许这是因为classname是错误的.如果我只有一个jar文件,我究竟如何找到我应该使用的类名?它没有记录在任何地方,我在罐子里找不到任何类似于那条道路的东西.
我正在研究我认为是一个非常简单的脚本,使用'useradd'动态创建一个FTP用户.我不熟悉这个过程的几个部分,整整一天的研究都没有让我太过分.这是我有的:
password="pass"
pass=$(perl -e 'print crypt($ARGV[0], "wtf")' $password)
useradd -d HOME_DIR -s /bin/bash -g GROUP -p $pass -f -1 testing
Run Code Online (Sandbox Code Playgroud)
笔记
话题:
让我知道,如果我说这一切都错了,或者我想要做的事情是不可能的,或者我是否对我在此陈述的任何事情都有所误导.感谢您提供任何帮助.:d
我想实现将文件上传到FTP服务器的逻辑.
我是iPhone开发的新手,所以想找出首选的方法.浏览此任务的可用API后,我设法只找到使用CFNetwork的代码(看起来不像Objective C).
还有URL加载系统使用基于Objective C的NSURL等.
所以,我的问题:是否可以使用URL加载系统实现文件上传到FTP服务器?
谢谢.
我运行自己的Web服务器进行开发,并在其上安装了一个WordPress实例.当我尝试从管理界面向此实例添加插件时,WordPress会要求FTP访问.
我不使用FTP,并且将来也没有计划这样做.我知道我可以在WordPress中更改一些配置,这样我就可以在没有FTP的情况下上传.我应该配置什么才能实现这一目标?
我理解在FTP方面ASCII模式与二进制之间的区别,但我不明白为什么甚至需要ASCII模式?这只是一个传统的东西,通过消除最重要的位来节省时间,因此导致传输的整体速度增加1/8?或者是否有一些我不知道的隐藏用途?
我遇到了很多问题,因为在不同操作系统之间传输文本时,我会忘记将模式切换到bin.我不明白为什么"bin"不仅仅是所有东西的默认设置,特别是今天的互联网速度更快.
Knowwutimean,Vern?
我遇到Safari的问题我无法解决:
<?php
header("Location: ftp://username:password@somedomain.org/somefile.zip");
?>
Run Code Online (Sandbox Code Playgroud)
此代码段适用于所有浏览器(Fx,Chrome,IE7-9),但不适用于最新的Safari,后者告诉我,我无权查看该页面(即重定向到正确的页面[ somedomain.org]使用正确的协议,但不处理身份验证数据).
有趣的是,当我将它直接复制到地址栏或者在<a>-tag中点击它时,它可以工作.这是一个Safari bug,还是我在这里遗漏了一些其他浏览器忽略的东西?如果它是一个Safari bug,是否有某种解决方法?
当我在FTP模式下从Windows命令提示符登录到Unix时,如何查看文件的内容(在Unix服务器上)?我尝试过vi,cat和ed但它们都没有用.我可以查看文件ls -l,但无法查看内容.如果有任何特殊命令,请告诉我.
如果我在本地执行此操作,一切正常:
require 'net/ftp'
ftp=Net::FTP.new("myftpserver.com", "username", "password")
ftp.getbinaryfile("/myfile.zip","localfile.zip")
ftp.close
Run Code Online (Sandbox Code Playgroud)
如果我尝试在我使用的Linux服务器上执行它,结果是:
/usr/local/lib/ruby/1.9.1/net/ftp.rb:273:in `getresp': 500 Illegal
PORT command. (Net::FTPPermError) from
/usr/local/lib/ruby/1.9.1/net/ftp.rb:281:in `voidresp' from
/usr/local/lib/ruby/1.9.1/net/ftp.rb:304:in `block in voidcmd' from
/usr/local/lib/ruby/1.9.1/monitor.rb:201:in `mon_synchronize' from
/usr/local/lib/ruby/1.9.1/net/ftp.rb:302:in `voidcmd' from
/usr/local/lib/ruby/1.9.1/net/ftp.rb:317:in `sendport' from
/usr/local/lib/ruby/1.9.1/net/ftp.rb:325:in `makeport' from
/usr/local/lib/ruby/1.9.1/net/ftp.rb:358:in `transfercmd' from
/usr/local/lib/ruby/1.9.1/net/ftp.rb:420:in `block (2 levels) in
retrbinary' from /usr/local/lib/ruby/1.9.1/net/ftp.rb:166:in
`with_binary' from /usr/local/lib/ruby/1.9.1/net/ftp.rb:419:in `block
in retrbinary' from /usr/local/lib/ruby/1.9.1/monitor.rb:201:in
`mon_synchronize' from /usr/local/lib/ruby/1.9.1/net/ftp.rb:418:in
`retrbinary' from /usr/local/lib/ruby/1.9.1/net/ftp.rb:539:in
`getbinaryfile'
Run Code Online (Sandbox Code Playgroud)
可能是什么问题呢?
环境:我在64位Windows 7上使用Sun Java JDK 1.8.0_60,使用Spring Integration 4.1.6(内部似乎使用Apache Commons Net 3.3进行FTPS访问).
我正在尝试与我们的应用程序集成,从客户端的FTPS服务器自动下载.我已经使用Spring Integration成功完成了使用Spring Integration的SFTP服务器而没有遇到任何问题,但是这是客户第一次要求我们使用FTPS,并且让它连接起来非常令人费解.虽然在我的实际应用程序中,我正在使用XML bean配置Spring Integration,试图了解什么不起作用我正在使用以下测试代码(虽然我在这里匿名实际的主机/用户名/密码):
final DefaultFtpsSessionFactory sessionFactory = new DefaultFtpsSessionFactory();
sessionFactory.setHost("XXXXXXXXX");
sessionFactory.setPort(990);
sessionFactory.setUsername("XXXXXXX");
sessionFactory.setPassword("XXXXXXX");
sessionFactory.setClientMode(2);
sessionFactory.setFileType(2);
sessionFactory.setUseClientMode(true);
sessionFactory.setImplicit(true);
sessionFactory.setTrustManager(TrustManagerUtils.getAcceptAllTrustManager());
sessionFactory.setProt("P");
sessionFactory.setProtocol("TLSv1.2");
sessionFactory.setProtocols(new String[]{"TLSv1.2"});
sessionFactory.setSessionCreation(true);
sessionFactory.setCipherSuites(new String[]{"TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256"});
final FtpSession session = sessionFactory.getSession();
//try {
final FTPFile[] ftpFiles = session.list("/");
logger.debug("FtpFiles: {}", (Object[]) ftpFiles);
//} catch (Exception ignored ) {}
session.close();
Run Code Online (Sandbox Code Playgroud)
我正在运行此代码以-Djavax.net.debug=all打印所有TLS调试信息.
与FTPS服务器的主要"控制"连接工作正常,但是当它试图打开列表的数据连接(或我尝试过的任何其他数据连接)时,我得到了一个javax.net.ssl.SSLHandshakeException: Remote host closed connection during handshake,由...引起的java.io.EOFException: SSL peer shut down incorrectly.如果我取消注释session.list …