@cooldomon (内山 直孝)

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

python ftpで画像をアップロードしたい

python FTP で画像をアップロードしたい

例)
初めてpython +tkinterデ」ツールを作っています
エクセルの列に書いてあるフォルダ名を上から見ていきサーバーに無ければ作りそこにテンプレートから作ったindex.htmlをアップロードしてimgフォルダも作り画像をアップロードしたいのですが
うまく行きません、imgフォルダを作るまではできています

発生している問題・エラー

出ているエラーメッセージを入力

例)

NameError (uninitialized constant World)

または、問題・エラーが起きている画像をここにドラッグアンドドロップ

ftp = FTP('ftp.lolipop.jp') # FTPサーバー名
ftp.login(user='??',passwd='??')  #FTP ログインID、ログインパスワード
ftp.cwd('senkyo')  # FTP 対象ディレクトリ
ftp.set_pasv("true")

ftp_list = ftp.nlst(".")  # FTP対象ディレクトリ_リスト
messagebox.showinfo("画像ファイルリスト",imlist)
messagebox.showinfo("フォルダ",name) #ftp_list[2]) #
for Upfld in name:
    #imlist = os.listdir(saki)
    
    if not Upfld in ftp_list:
        saki = "/img/"
        
        filename = path + "\\" + Upfld +"\\index.html"
        ftp.mkd(Upfld)
        ftp.cwd(Upfld)
        #ファイルアップロード
        
        local_path = path + "\\" + Upfld +"\\img\\"
        messagebox.showinfo("ローカルフォルダ", local_path)
        fp = open(filename, "rb")
        ftp.storlines("STOR index.html", fp)
                    #
        ftp.mkd("img")
        #ftp.cwd("/img/")
        # switch to secure data connection
        #画像アップロード
       
        for item  in imlist:
            #filename =  "./" + Upfld +"/img/" + item "
            messagebox.showinfo("画像ファイル", local_path + item + "|" + saki  + item)
            f = open(local_path + item  , 'rb')
            ftp.storbinary("STOR + item", f)
            
            
        ftp.cwd("..")
        messagebox.showinfo("画像ファイル", "完了1")
#ftp.cwd("..")   
        
        
ftp.quit() 
messagebox.showinfo("画像ファイル", "完了2")`

そもそも ftp.storbinary("STOR + item", f)がよくわかっていません、ここを色々試しますがエラーになったり + itemというファイルができたり
#ftp.cwd("/img/")やftp.cwd("..") をいじるとフォルダ構造が狂ったりします、
#ftp.cwd("/img/")やftp.cwd("..")もいじると同様です
お手上げです
、汚いソースコードですがどなたか解決方法を教えてください

0 likes

4Answer

robozushi10さん
画像ファイルは6個だけなのでforと変数は使わずアップロードできました。それよりimgディレクトリにいって戻るのに苦労しました。ありがとうございました。タイトルなし.png

こんな感じです

#画像アップロード
ftp.mkd("img")
ftp.cwd("img/")

        f = open(local_path + 'arrow01.gif' ,'rb')
        ftp.storbinary("STOR arrow01.gif", f)
        
        f1 = open(local_path + 'spacer.gif' ,'rb')
        ftp.storbinary("STOR spacer.gif", f1)
        
        f2 = open(local_path + 'slide1.jpg' ,'rb')
        ftp.storbinary("STOR slide1.jpg", f2)
        
        f3 = open(local_path + 'slide2.jpg' ,'rb')
        ftp.storbinary("STOR slide2.jpg", f3)
        
        f4 = open(local_path + 'slide3.jpg' ,'rb')
        ftp.storbinary("STOR slide3.jpg", f4)
        
        f5 = open(local_path + 'slide4.jpg' ,'rb')
        ftp.storbinary("STOR slide4.jpg", f5)
        
        f6 = open(local_path + 'slide5.jpg' ,'rb')
        ftp.storbinary("STOR slide5.jpg", f6)
        
        #messagebox.showinfo("今フォルダ", ftp.pwd())    
        #messagebox.showinfo("画像ファイル", "完了1")
        ftp.cwd("../")
        ftp.cwd("../") #これにたどり着くまで何回試行錯誤しただろう?
        
#ftp.cdup("../") 
        
        
ftp.quit() 

タイトルなし.png

1Like

ありがとうございます、あとはぼちぼち変数とforに置き換えていこうと思います

1Like

(文法的に正しいのか未確認ですが) 例えば、次のように
ハードコーディングをした簡単なコード で local/a.png のアップロードできることを確認する.
その後、少しずつ変数に置き換えていく、といった方法も有益かと思いました.

ftp = FTP('ftp.lolipop.jp') # FTPサーバー名
ftp.login(user='??',passwd='??')  #FTP ログインID、ログインパスワード
ftp.cwd('senkyo')  # FTP 対象ディレクトリ
ftp.set_pasv("true")
f = open('./local/a.png', 'rb')
ftp.storbinary("STOR + item", f)
0Like

Comments

  1. @cooldomon

    Questioner

    早速試してみます、回答ありがとうございます、引き続き報告いたしますのでよろしくお願い致します

Your answer might help someone💌