我覺得ssh傳輸檔案到阿里雲還是比較簡單的一種方式,下面顯示用python寫的**
import paramiko
transport = paramiko.transport(
('你的ip位址',22
))#ssh鏈結埠一般是22
transport.connect(username=
'你的使用者名稱'
, password=
'你的密碼'
)sftp = paramiko.sftpclient.from_transport(transport)
#如果連線需要金鑰,則要加上乙個引數,hostkey="金鑰"
sftp.put(
'要傳輸的檔案'
,'傳輸後的檔案'
)transport.close(
)#關閉連線
一開始我是想著用tcp方法的,之前沒有傳輸過檔案,不知道用ssh比較簡單,在這部分上花了很多時間,但是最終還是採用了ssh的方式。阿里雲伺服器在鏈結埠的時候,一定要在安全組裡設定相關的埠,否則很可能連不上。我一開始就是因為這個原因疑惑了半天到底是什麼原因。
# server
import socket # 匯入 socket 模組
import time
import os
s = socket.socket(
)# 建立 socket 物件
host = socket.gethostname(
)# 獲取本地主機名
port =
12345
# 設定埠
s.bind(
(host, port)
)# 繫結埠
pic_path =
'要接收的檔案位址'
s.listen(5)
# 等待客戶端連線
while
true
: conn, addr = s.accept(
)# 建立客戶端連線
print
(, addr)
r = conn.recv(
20480
) r = r.split(
)print
(r) data_len =
eval
(r[0])
#從客戶端接收到的資料很可能是帶有空格的,所以要做乙個切掉後面空格的處理
#print(data_len)
data = conn.recv(data_len)
conn.close(
)with
open
(pic_path,
'wb'
)as f:
f.write(data)
f.close(
)
客戶端這裡,我想要的時能檢測當前是否有新檔案產生,有的話才傳送檔案的效果。
import socket # 匯入 socket 模組
import os,os.path,datetime
import time
base_dir=
"要傳輸的路徑"
l=os.listdir(base_dir)
#將當前路徑下的所有檔名以列表的形式返回到l
s = socket.socket(
)# 建立 socket 物件
host = socket.gethostname(
) port =
12345
# 設定埠號
l.sort(key=
lambda fn: os.path.getmtime(base_dir+fn)
ifnot os.path.isdir(base_dir+fn)
else0)
#給檔名排序
d1=datetime.datetime.fromtimestamp(os.path.getmtime(base_dir+l[-1
]))#返回最新一次修改的檔案的檔名
k = l[-1
]while
(true):
l=os.listdir(base_dir)
l.sort(key=
lambda fn: os.path.getmtime(base_dir+fn)
ifnot os.path.isdir(base_dir+fn)
else0)
d1=datetime.datetime.fromtimestamp(os.path.getmtime(base_dir+l[-1
]))if k != l[-1
]:#當最新的一次和上一次的檔名不一樣時,傳輸新檔案
print
(l[-1]
) k = l[-1
] photo = base_dir + k #位址的合併
with
open
(photo,
'rb'
)as f:
data = f.read(
) s = socket.socket(
) s.connect(
(host, port)
)print
("connect success!!!"
) s.send(
str(
len(data)
).encode(
'utf-8'))
s.send(data)
s.close(
)
ssh連線方式的參考: windows上傳檔案到windows
description 從本地上傳檔案到共享目錄 param param localfilename 本地檔名 public static void smbput string localfilename catch exception e finally catch ioexception e d...
docker在windows下上傳檔案到容器
我的系統是windows10,docker是用dockertoolbox工具安裝的,安裝完之後會預設掛載windows的c users目錄,在docker裡面對應路徑是 c users,docker預設的使用者路徑是 c users windows的登入使用者名稱,對應windows的登入使用者目錄...
windows下Flask上傳檔案路徑
在windows下用flask實現上傳,上傳後總是找不到正確的資料夾路徑。修改上傳資料夾為如下的時候 upload folder sys.path 0 上傳到程式所在的當前資料夾,但是新增了當前路徑下的資料夾後就會出錯,試過了各種組合,最後找到了乙個很好的並且可以隨意任何作業系統之間遷移的方法 py...