通过phpseclib上传的文件减少到14字节?
我最近为我的服务器配置了phpseclib2.0;所以我对这个很陌生。当尝试使用phpseclib通过普通HTML表单和PHP上传文件小于1MB的jpg图像时,图像会准确地上传到我想要的位置,但是文件大小只有14字节(970kb是原始文件大小)。有什么帮助吗?我的代码如下:通过phpseclib上传的文件减少到14字节?,php,ssh,ftp,sftp,phpseclib,Php,Ssh,Ftp,Sftp,Phpseclib,我最近为我的服务器配置了phpseclib2.0;所以我对这个很陌生。当尝试使用phpseclib通过普通HTML表单和PHP上传文件小于1MB的jpg图像时,图像会准确地上传到我想要的位置,但是文件大小只有14字节(970kb是原始文件大小)。有什么帮助吗?我的代码如下: // Establish the SFTP connection $sftp = new \phpseclib\Net\SFTP('www.myhost.com'); // Login with username and
// Establish the SFTP connection
$sftp = new \phpseclib\Net\SFTP('www.myhost.com');
// Login with username and password, and inform if the login was successful
if (!$sftp->login('myuser','mypassword')) {
$uploadAnswer = 'SFTP Connection failed!';
} else {
$uploadAnswer = 'SFTP Connection succesful!';
// migrate to root folder
$rootPath = $sftp->pwd();
// Create destination Path
$destinationPath = $rootPath.'/myfolder/'.$_FILES['myupload']['name'];
// Load the file onto the server, and inform if upload was successful
if (!$sftp->put($destinationPath,$_FILES['myupload']['tmp_name'])) {
$uploadAnswer = "There's been a problem with the Upload!";
} else {
$uploadAnswer = 'File successfully uploaded!';
}
}
当我运行此操作时,会显示消息“文件已成功上载!”也可以正确显示。这里发生了什么事???更换线路
$sftp->put($destinationPath,$_FILES['myupload']['tmp_name'])
与
根据建议,提供的链接无法正常工作。解决办法是:
$sftp->put($destinationPath,$_FILES['myupload']['tmp_name'],\phpseclib\Net\SFTP::SOURCE_LOCAL_FILE)
这就成功了;因此,问题在于,由于某些原因,SFTP类可能无法正确识别。如果有人已经有同样的问题;请让我知道。您检查过$\u文件是否包含您认为应该从开始的内容吗?Tbh我不知道如何做。。当我使用$_FILES['myupload']['name']获取文件名时;我得到上传文件的名称。当我回显$_文件['myupload']['tmp_name']时,我会得到一个类似于/tmp/phprandomstrings的随机创建路径。这对你有帮助吗?看。@MartinPrikryl谢谢,我看到了那篇文章,但如果我将SFTP::SOURCE_LOCAL_文件作为最后一个参数添加到put()函数中,对我来说仍然不起作用。同样奇怪的是,我必须使用new\phpseclib\Net\SFTP定义一个新的SFTP对象,正如你在上面的代码中看到的那样。当我只使用新的SFTP时,我得到的错误类“SFTP”未找到。应该是这样吗??;如果您使用phpseclib\Net\SFTP,这个文件似乎使用了相同的表示法策略
SFTP::SOURCE\u LOCAL\u FILE
works代码>在顶部。@neubert不。。
$sftp->put($destinationPath,$_FILES['myupload']['tmp_name'],\phpseclib\Net\SFTP::SOURCE_LOCAL_FILE)