【问题标题】:upload file name with special characters using libcurl使用 libcurl 上传带有特殊字符的文件名
【发布时间】:2017-02-08 11:39:12
【问题描述】:

尝试使用 curl FTP 将文件 HU98373+TRRepr#o4_201702061135_34 从本地系统复制到远程目标。

在远程系统中,它使用 HU98373+TRRepr 而不是 HU98373+TRRepr#o4_201702061135_34 创建了文件。我不知道为什么它不考虑'#'字符

请检查以下代码。

remoteFileUrl = ftp://IPADRESS/HOME/HU98373+TRRepr#o4_201702061135_34.tmp/C20170206.1135-20170206.1140

curl_easy_setopt(m_CurlSessionHandle, CURLOPT_URL, remoteFileUrl);
                        curl_easy_setopt(m_CurlSessionHandle, CURLOPT_UPLOAD, ON);

                        // Set the input local file handle
                        curl_easy_setopt(m_CurlSessionHandle, CURLOPT_READDATA, localFileHandle);

                        // Set on/off all wanted options
                        // Enable ftp data connection
                        curl_easy_setopt(m_CurlSessionHandle, CURLOPT_NOBODY, OFF);

                        // Create missing directory into FTP path
                        curl_easy_setopt(m_CurlSessionHandle, CURLOPT_FTP_CREATE_MISSING_DIRS , ON) ;

                        // Set the progress function, in oder to check the stop transfer request
                        curl_easy_setopt(m_CurlSessionHandle, CURLOPT_NOPROGRESS, OFF);
                        curl_easy_setopt(m_CurlSessionHandle, CURLOPT_PROGRESSFUNCTION, progressCb);
                        curl_easy_setopt(m_CurlSessionHandle, CURLOPT_PROGRESSDATA, this);

                        CURLcode curlOperationResult = curl_easy_perform(m_CurlSessionHandle);

谁能帮我解决这个问题

【问题讨论】:

    标签: c++ libcurl


    【解决方案1】:

    一个URL由以下几部分组成:

     scheme:[//[user:password@]host[:port]][/]path[?query][#fragment]
    

    字符# 表示URL 片段。您必须对 # 字符进行 URL 编码,以便它不会被解释为片段分隔符。

    编码后,服务器将按预期解析 URL,并生成正确的文件名。

    以下问题显示了如何在 C++ 中执行此操作:

    Encode/Decode URLs in C++

    【讨论】:

    • 远程文件 url:IPADRESS:21/HOME/HU98373+TRRepr#o4_201702071615_1.tmp/… url:...得到错误代码:6,无法解析主机名...请告诉我如何继续
    • 在 libcurl 调用上面的 url 编码后失败并出现错误代码:6 无法解析主机名
    • 我将 # 编码为 %23 并且我没有触摸剩余的字符串,在上传文件 [post] 期间,出现错误 18,传输了部分文件,服务器未报告 OK,得到 426
    • 使用 curl 7.37.0
    • 感谢 Vinicius,FTP 服务器出现问题,更换 FTP 服务器后它工作正常。谢谢你的回答
    猜你喜欢
    • 2014-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-05
    • 1970-01-01
    相关资源
    最近更新 更多