开发遇到一个需求,需要将图片通过sftp上传到远程服务器上,之前没用过这个功能,折腾了我好几天才搞定,下面记录下我的处理方法:

$sftp = 'ssh2.sftp://';
//连接sftp
$conn = ssh2_connect('IP','端口');
//登录
ssh2_auth_password($conn,"user","password");
$result = ssh2_sftp($conn);
//判断是否存在目录HM(特别注意账号登录进来后默认的文件路径是不是根目录,否则找不到文件夹,也不能创建文件夹,可通过pwd命令查看当前文件夹路径)
if (!file_exists($sftp.$result.'/HM/')) {
  $dir = ssh2_sftp_mkdir($result, '/HM/',0777,true);
}else{
  $dir = true;
}
if($dir){
  //realpath方法将相对路径转为绝对路径
  $send = ssh2_scp_send($conn,realpath($localfile),$remotefile);
  //开始这种方法是测试可行的,后来ftp账号权限被修改,导致进不到根目录,然后不知为什么就不行了,之后就只能曲线救国采用下面的方法
}else{
  $send = false;
}
//远程服务器创建一个文件
$sftpStream = fopen($sftp.$result.$remotefilename, 'w'); //若报(failed to open stream: operation failed)错误,需要将$result改为intval($result)
//获取本地文件
$data_to_send = file_get_contents(realpath($localfilename));
//将本地文件写入到远程文件中
$send = fwrite($sftpStream, $data_to_send);
//关闭文件流
fclose($sftpStream);
linux下命令行连接sftp

sftp -oPort=22 username@ip

sftp上传到远程服务器的更多相关文章

  1. MySQL执行sql查询并上传至远程服务器

    最近项目中有需要做一个shell脚本,可以对一个数据库执行sql操作,并将结果转为txt,筛选结果用tab隔开,保存至一个远程服务器上,以供其他人用Excel读取用txt中的内容. MySQL中将结果 ...

  2. linux自动备份文件 并上传到远程服务器 脚本实现

    (1)在服务器上创建备份目录,并赋予权限       mkdir -p /backup/bakdata  #新建数据备份目录(2)完成备份脚本操作新建脚本文件      vi bakdata.sh添加 ...

  3. 使用SFTP上传文件到服务器的简单使用

    最近用到SFTP上传文件查找了一些资料后自己做了一点总结,方便以后的查询 /** * 将文件上传到服务器 * * @param filePath * 文件路径 * @param channelSftp ...

  4. 如何使用 PyCharm 将代码上传到远程服务器上(详细图解)

    说明:该篇博客是博主一字一码编写的,实属不易,请尊重原创,谢谢大家! 一丶测试说明 1.通过Windows电脑上的PyCharm,将代码上传到虚拟机Ubuntu系统中 需要在虚拟机中安装Ubuntu的 ...

  5. C# HTTP系列11 以普通文件流方式上传文件远程服务器

    系列目录     [已更新最新开发文章,点击查看详细] 应用程序中上传附件是最常使用的操作之一,ASP.NET客户端一般通过上传控件实现, <input type="file" ...

  6. php把文件上传到远程服务器上例子

    在这里我们利用curl实现把本地服务器的文件通过curl发送请求给远程服务器的php文件接受就实现了上传,还一个是利用ftp来上传方法也是php中的curl操作ftp服务器进行上传. 我这里写的是用c ...

  7. 利用paramiko获取上传下载远程服务器的资源信息

    # -*- coding: utf-8 -*- import paramikohostname='192.168.76.10'username='root'password='123456'param ...

  8. spring boot图片上传至远程服务器并返回新的图片路径

    界面上传图片时考虑到可能会有用户的图片名称一致,使用UUID来对图片名称进行重新生成. //UUIDUtils public class UUIDUtils { public static Strin ...

  9. 【Java】后台将文件上传至远程服务器

    问题:由于系统在局域网(能访问外网)内,但外网无法请求局域网内服务器文件和进行处理文件. 解决:建立文件服务器,用于存储文件及外网调用. 客户端(文件上传): package cn.hkwl.lm.u ...

随机推荐

  1. Oracle数据库错误消息

    Oracle数据库错误消息 导出错误消息 l EXP-00000导出终止失败 原因:导出时产生Oracle错误. 操作:检查相应的Oracle错误消息. l EXP-00001数据域被截断 - 列长度 ...

  2. 缩短移动开发周期的ApiCloud

    ApiCloud百度百科介绍: ApiCloud 官网 官方论坛 APICloud经典O2O案例APP视频教程

  3. 讲座: conversation

    一, Zhouming MSRA NLP group NLP 2.0 attention model 二,Yan Rui 一, retrived based-conversation system t ...

  4. Dynamics CRM RibbonWorkbench工具使用

    这边用的是RibbonWorkbench2016的工具,导入RibbonWorkbench2016解决方案即可.导入成功后在解决方案下面会多出一个快捷键小图标. 一.基本介绍 二.列表页获取选中记录的 ...

  5. March 23 2017 Week 12 Thursday

    A bird is known by its note, and a man by his talk. 闻其声而知鸟,听其言而知人. One of the lessons I learned rece ...

  6. CRM product UI里assignment block的显示隐藏逻辑

    我们在product overview page里能看到很多的assignment block.但是runtime的时候真正显示出来的内容只是configuration里面看到内容的一个子集. Pro ...

  7. ArcGIS Server 10 Java 版的Rest服务的部署方法

    使用ArcGIS Server 10 Java版发布GIS服务,当使用ArcGIS Manager创建好服务后,然后打开“ArcGIS Services Directory”的链接时发现网页报出了找不 ...

  8. UESTC-1259 昊昊爱运动 II

    昊昊爱运动 II Time Limit: 3000/1000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others)     昊昊喜 ...

  9. linux自动备份文件 并上传到远程服务器 脚本实现

    (1)在服务器上创建备份目录,并赋予权限       mkdir -p /backup/bakdata  #新建数据备份目录(2)完成备份脚本操作新建脚本文件      vi bakdata.sh添加 ...

  10. (第四场)G Maximum Mode 【YY+暴力】

    链接:https://www.nowcoder.com/acm/contest/142/G 来源:牛客网 题目描述 The mode of an integer sequence is the val ...