中文名称的文件传不到ftp服务器,FTP上传文件时文件的中文名称变为#号,解决方法...
由于R&D中心需要把圖紙上傳到FTP服務器上,所以做了一個FTP方式的上傳本地文件到FTP服務器的程序,程序做完但是出現了一些問題,貼出來大家討論,以便給予本人解決。現謝謝各位的參與和恢復。
問題:
1、上傳的文件名稱為英文或數字時沒有問題,但是當文件名為中文時,傳到服務器上的文件中文名稱部分就全變為了#號。
例如:本地文件名為:FILE123.TXT? ?? ?上傳到服務器上文件名稱還是為:FILE123.TXT
本地文件名為:文件123.TXT? ?? ? 上傳到服務器上文件名稱變成了:###123.TXT
在調試跟中時走道CALL FUNCTION 'FTP_R3_TO_SERVER' 時,name2在系統中還是中文顯示,
函數完成,程序結束,文件傳到服務器上,名稱變為#號。
2、如果服務器上存放文件的路徑有中文,上傳出現錯誤。
例如:服務器路徑
保存文件/
第一種??filename??= '/SAVEFILE/FILE123.TXT'.
第二種 filename??= '/保存文件/FILE123.TXT'.
CONCATENATE??filename '' INTO name2.
這兩種格式,第一種文件上傳成功,第二種提示“FTP子命令:服務器報表錯誤”。
按照網上的提示把系統變量SAP_CODEPAGE 設置為 8400 等,都沒有解決問題.
測試FTP 服務器為WIN2003 SERVER版,系統自帶IIS設置.
DATA: hdl TYPE i,
key TYPE i VALUE 26101957,
dstlen TYPE i,
slen TYPE i,
blob_length TYPE i.
DATA filepath TYPE string .
DATA: BEGIN OF blob OCCURS 0,
line(100) TYPE x,
END OF blob.
DATA: result TYPE TABLE OF text WITH HEADER LINE.
DATA:filename1 TYPE string,
path TYPE string,
fullpath TYPE string.
PARAMETERS:
user(30) TYPE c LOWER CASE DEFAULT 'test',
pwd(30) TYPE c LOWER CASE DEFAULT 'test',
host(64) TYPE c LOWER CASE DEFAULT '172.16.0.128',
filename(80) TYPE c DEFAULT 'test.xls',
name2(80) TYPE c DEFAULT 'test.xls',
dest LIKE rfcdes-rfcdest DEFAULT 'SAPFTP'.
PARAMETERS: p_file LIKE rlgrap-filename?? DEFAULT 'c:\test.xls'.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
PERFORM get_p_file USING p_file text-006.
START-OF-SELECTION.
*? CALL SCREEN 100.
*END-OF-SELECTION .
CALL 'AB_RFC_X_SCRAMBLE_STRING'
ID 'SOURCE'? FIELD pwd
ID 'KEY'? FIELD key
ID 'SCR'? FIELD 'X'
ID 'DESTINATION'? FIELD pwd
ID 'DSTLEN'? FIELD dstlen.
slen = STRLEN( pwd ).
CALL FUNCTION 'HTTP_SCRAMBLE'
EXPORTING
SOURCE????? = pwd
sourcelen?? = slen
key???????? = key
IMPORTING
destination = pwd.
CALL FUNCTION 'FTP_CONNECT'
EXPORTING
user??????????? = user
password??????? = pwd
host??????????? = host
rfc_destination = dest
IMPORTING
handle????????? = hdl.
filepath = p_file.
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
filename?? = filepath
filetype?? = 'BIN'
IMPORTING
filelength = blob_length
TABLES
data_tab?? = blob.
WRITE ''.
CALL FUNCTION 'CH_SPLIT_FILENAME'
EXPORTING
complete_filename = filepath
IMPORTING
name_with_ext???? = name2.
WRITE: AT / 'Get ',p_file,' Length: ',blob_length.
CONCATENATE? filename '' INTO name2.
CALL FUNCTION 'FTP_R3_TO_SERVER'
EXPORTING
handle????? = hdl
fname?????? = name2
blob_length = blob_length
TABLES
blob??????? = blob.
*? CALL FUNCTION 'FTP_COMMAND'
*??? EXPORTING
*????? handle?? = hdl
*????? command? = 'PUT'
*??? IMPORTING
*????? filesize = blob_length
*??? TABLES
*????? data???? = blob.
WRITE: AT / 'Put ',name2.
CALL FUNCTION 'FTP_DISCONNECT'
EXPORTING
handle = hdl.
FORM get_p_file? USING??? l_filename??? l_text.
CALL FUNCTION 'WS_FILENAME_GET'
EXPORTING
def_filename???? = space
def_path???????? = l_filename
mask???????????? = ',*.dwg ,*.dwg.'
mode???????????? = 'O'
title??????????? = l_text
IMPORTING
filename???????? = l_filename
EXCEPTIONS
inv_winsys?????? = 04
no_batch???????? = 08
selection_cancel = 12
selection_error? = 16.
ENDFORM.??????????????????? " get_p_file*Text elements
*----------------------------------------------------------------------*
*? MODULE user_command_0100 INPUT
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
MODULE user_command_0100 INPUT.
CASE sy-ucomm.
WHEN 'EXIT'.
CALL FUNCTION 'GUI_FILE_LOAD_DIALOG'
EXPORTING
window_title??????????? = 'DWG引入'
default_extension?????? = 'DWG'
*?? DEFAULT_FILE_NAME?????? = 'DWG'
*?? WITH_ENCODING?????????? =
*?? FILE_FILTER???????????? =
initial_directory?????? =? 'C:\'
IMPORTING
filename??????????????? = filename1
path??????????????????? =? path
fullpath??????????????? =? fullpath
*?? USER_ACTION???????????? =
*?? FILE_ENCODING?????????? =
.
filename1 = fullpath.
ENDCASE.
CLEAR sy-ucomm.
ENDMODULE.???????????????? " USER_COMMAND_0100? INP
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的中文名称的文件传不到ftp服务器,FTP上传文件时文件的中文名称变为#号,解决方法...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何在 Mac上使用预览解锁 PDF
- 下一篇: PS(留学动机)的妙用——扭转你的劣势