我有单独的域指向专用框上的单独文档根
我想授予对此文档根目录下的子文件夹ftp-upload的FTP访问权限.
正确的FTP配置不是此问题的一部分
如果授权人员将文件上传到document_root/ftp-upload,则应通过domain.com/file而不是domain.com/ftp-upload/file访问此文件
.htaccess文件位于文档根目录中
我尝试了一些东西,但它们似乎没有用.
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /
## check if the file exists in subfolder
## ...and if found, stop and display it
RewriteCond %{DOCUMENT_ROOT}/ftp-upload/$1 -f [OR]
RewriteCond %{DOCUMENT_ROOT}/ftp-upload/$1 -d
RewriteCond $1 !^$
RewriteRule (.*) %{DOCUMENT_ROOT}/ftp-upload/$1 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond $1 !^(index\.php|images|robots\.txt|css|assets|ftp-upload)
RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>
Run Code Online (Sandbox Code Playgroud)
我也试过了
RewriteCond %{DOCUMENT_ROOT}/ftp-upload/${REQUEST_FILENAME} -f
Run Code Online (Sandbox Code Playgroud)
和
RewriteCond %{DOCUMENT_ROOT}/ftp-upload%{REQUEST_URI} -f
Run Code Online (Sandbox Code Playgroud)
这是一项正在进行的工作,所以这不是最终的解决方案,但是这个功能正在被要求很多.如果可能的话,我宁愿不让他们访问文档根目录.
更新:它看起来像什么工作,什么时候需要......
如果我输入domain.com/test.txt(仅存在于ftp-upload目录中),请求将转至domain.com/index.php/test.txt并在主页上提供服务
如果我输入domain.com/ftp-upload/,我会得到一个包含test.txt的目录列表
如果我点击test.txt,我会得到文件内容(这是"它的工作原理!").如果我输入domain.com/test.txt,我会再次显示文件内容...
我的脑袋爆炸......任何想法?
解决了另一种方式,这里的答案在我的服务器上不起作用.
我现在建立的CMS有另一个用户组'SEO优化'和上传部分.在该部分下,用户可以选择他们要将文件上传到哪个指定位置.如果上传文件夹中存在所请求的文件,则网站index.php(控制器/路由器)将提供服务.没有.htaccess编辑,因为我的服务器表现得很时髦..
这是我用来通过FTP使用Jakarta Commons Net将文件上传到远程位置的代码
public boolean ftpTransfer(String localfile, String destinationfile)
{
String server = "xxxx";
String username = "xxxxxx";
String password = "xxxxxxx";
try
{
FTPClient ftp = new FTPClient();
ftp.connect(server);
if(!ftp.login(username, password))
{
System.out.println("login");
ftp.logout();
return false;
}
int reply = ftp.getReplyCode();
if (!FTPReply.isPositiveCompletion(reply))
{
System.out.println("disconnect");
ftp.disconnect();
return false;
}
InputStream in = new FileInputStream(localfile);
ftp.storeFile(destinationfile, in);
in.close();
ftp.logout();
ftp.disconnect();
}
catch (Exception ex)
{
ex.printStackTrace();
return false;
}
return true;
}
Run Code Online (Sandbox Code Playgroud)
控制台中的错误是
java.net.SocketTimeoutException: Read timed out
at java.net.SocketInputStream.socketRead0(Native Method) …Run Code Online (Sandbox Code Playgroud) 我不知道我做错了什么,但这个小的ftp代码不会传输文件.我一直在
文件"example.py",第11行,在?ftp.storlines("STOR"+文件,打开(文件))
ftplib.error_perm:550 /home/helen/docs/example.txt:不允许操作
这是代码:
import ftplib
file = '/home/helen/docs/example.txt'
ftp = ftplib.FTP('domain', 'user', 'password')
print "File List: "
files = ftp.dir()
ftp.cwd("/upload/")
ftp.storlines("STOR " + file, open(file))
f.close()
s.quit()
Run Code Online (Sandbox Code Playgroud)
任何帮助,将不胜感激.
我有一个自己的网站,我想编写一个应用程序,从中加载数据(字符串/文本),以填充iPhone上的tableview(如待办事项列表).我想一直更改我的应用程序(tableview)的内容而不在App Store中进行更新.当应用程序启动时,它应该从我的网站抓取内容...
我应该使用FTP来做这样的事情还是有更好的方法来加载和操作数据?
我正在尝试将相对较大的文件上传到FTP服务器(250-300mb).我在控制台应用程序中执行此操作.
当文件是几MB时,我的程序工作正常,但是大的文件导致:
System.Net.WebException: The underlying connection was closed: An unexpected error occurred on a receive.
Run Code Online (Sandbox Code Playgroud)
我试图设置超时,但我仍然得到错误.
知道如何修改我的代码,所以我没有得到错误?
我的上传代码:
using(var fs = File.OpenRead(zipFileName))
{
var ms = new MemoryStream();
ms.SetLength(fs.Length);
fs.Read(ms.GetBuffer(), 0, (int) fs.Length);
FtpWebRequest ftp = (FtpWebRequest)FtpWebRequest.Create(ftpUrl + "/" + zipFileName);
ftp.Credentials = new NetworkCredential(ftpUid, ftpPassword);
ftp.Timeout = 30000;
ftp.KeepAlive = true;
ftp.UseBinary = true;
ftp.Method = WebRequestMethods.Ftp.UploadFile;
byte[] buffer = new byte[ms.Length];
ms.Read(buffer, 0, buffer.Length);
ms.Close();
Stream ftpstream = ftp.GetRequestStream();
ftpstream.Write(buffer, 0, buffer.Length);
ftpstream.Close();
}
Run Code Online (Sandbox Code Playgroud) 我试图通过ftp上传文本文件,当我运行程序时,它清空我的文件,然后上传它.我不知道为什么......可能会覆盖或其他东西......这是我的代码:
这是在Main类
/* Create Object Instance */
ftp ftpClient = new ftp(@"ftp://sportcaffe.me", "sport***", "*****");
/* Upload a File */
ftpClient.upload("public_html/test.txt", @"C:\Users\Lazar\Desktop\test.txt");
Run Code Online (Sandbox Code Playgroud)
这里是ftp类的功能代码:
/* Upload File */
public void upload(string remoteFile, string localFile)
{
try
{
/* Create an FTP Request */
ftpRequest = (FtpWebRequest)FtpWebRequest.Create(host + "/" + remoteFile);
/* Log in to the FTP Server with the User Name and Password Provided */
ftpRequest.Credentials = new NetworkCredential(user, pass);
/* When in doubt, use these options */
ftpRequest.UseBinary = true;
ftpRequest.UsePassive …Run Code Online (Sandbox Code Playgroud) 我想从FTP下载文件.如果文件很小(通常低于1000MB),它可以工作.但是,如果文件很大,我会得到一个EIdReadTimeout.为什么?我应该保持连接活着吗?据我所知,读取数据有自己的通道,所以我不必保持连接存活.
奇怪的是,异常出现在Get的结尾(Get成功下载整个文件之后):FTP.Get(Name,TempGzFile,TRUE,FALSE)!!!!
文档:
TIdFTP.ReadTimeout - 等待FTP协议响应的毫秒数.
TIdFTP.TransferTimeout - FTP客户端数据通道上读取操作的超时值.
默认情况下,ReadTimeout设置为60秒,TransferTimeout设置为10秒.
我使用Delphi XE7(我猜使用Indy 10).我的IdFTP的被动属性设置为false.
我有SSIS包,将数据加载到文件中.目前该文件位于网络驱动器中,但我的经理希望通过SSH服务器在FTP中使用此文件.我没有看到任何可以做到这一点的SSIS任务.我知道FTP任务在这里不起作用.有人可以帮助我.
我是Node.js的新手,但是我构建了一个应用程序,对此感到非常满意。我想知道如何将Node.js应用程序上传到FTP服务器?甚至有可能这样做吗?