cURL - 文件路径位置的文件上传不适用于 Windows 命令提示符

Posted

技术标签:

【中文标题】cURL - 文件路径位置的文件上传不适用于 Windows 命令提示符【英文标题】:cURL - file upload with file path location not working with windows command prompt 【发布时间】:2020-08-29 18:14:27 【问题描述】:

我正在尝试使用 Windows 命令提示符中的 cURL 命令将文件发送到服务器。但是收到错误消息为 ""detail":"JSON parse error - No JSON object could be decoded""。但是使用邮递员我可以将文件发送到服务器。下面给出详细信息。

这是我尝试通过发送文件位置来发送/上传文件的两个 cURL 命令:

curl --insecure -F user_file=@"C:/Users/402096/Desktop/dau_settings-123.conf" -H "Content-Type: application/json" -H "Authorization: Token 3f98d0a178ddd176faea94e6d629621920d203b2624550e68a" -X POST https://10.107.12.123/import_config
curl --insecure -F "user_file=@C:/Users/402096/Desktop/dau_settings-123.conf" -H "Content-Type: application/json" -H "Authorization: Token 3f98d0a178ddd176faea94e6d629621920d203b2624550e68a" -X POST https://10.107.12.123/import_config

这是我的代码,将被调用以在 django 中上传文件

@api_view(["POST", "GET"])
@permission_classes((IsAuthenticated,))
@permission_required('dau_gui_app.execute_import_config')   
def import_config_view(request):
    
    if request.method == 'POST' and request.FILES['user_file']:
        
        user_file = request.FILES['user_file']         
       
        fs = FileSystemStorage()
        filename = fs.save( user_file.name, user_file)
        
        filePath = fs.location + "/" + filename
        
        print filePath
        
        message ="\
                \"command\":\"execute\",\
                \"subcommand\":\"import_config\",\
                \"args\": [\"file_path\":\"" + filePath + "\"]"    
                
        message.replace(" ", "")
        
        try:
            response = send_cmd(message) 
        except:
            print("An exception occurred sending the message:")   
            print(message)   
            
        #end try       
        
        fs.delete(filename)
                       
        return HttpResponse(response, content_type='application/json')
        
    return render(request, 'dau_gui_app/import_config.html' ,'title':"Import Configuration" )  

注意: 我能够使用邮递员成功上传文件。当我查看邮递员用来上传/发送文件的 cURL 代码时,我在邮递员中看到下面的 cURL。但是当我在 windows 命令提示符下键入相同的命令时,会出现与语法和格式相关的错误。

curl -X POST 'https://10.107.12.123/import_config' -H 'Content-Type: application/json' -H 'Authorization: Token 3f98d0a178ddd176faea94e6d629621920d203b2624550e68a' -H 'Cookie: csrftoken=wC4LbjwDsh5BkRPi7TgwZN2FbQLMMpuz; sessionid=7xq7jv95j50k6lkojbrkp2ndgfczfe9v' -F 'user_file=@/C:/Users/402096/Desktop/dau_settings-123.conf'

请帮助我如何使用 cURL 从 Windows 命令提示符发送/上传文件到我的 django 服务器。不知道我在这里错过了什么

【问题讨论】:

"但收到错误消息。"什么错误信息? @Kritner 我收到错误消息 "detail":"JSON parse error - No JSON object could be decoded"。 【参考方案1】:

需要安装 curl 并在环境变量中设置路径。 从这里结帐安装步骤: https://develop.zendesk.com/hc/en-us/articles/360001068567-Installing-and-using-cURL#install

【讨论】:

用我得到的错误详细信息更新了我的问题。仅供参考,我已经让 cURL 对任何其他命令都可以正常工作。

以上是关于cURL - 文件路径位置的文件上传不适用于 Windows 命令提示符的主要内容,如果未能解决你的问题,请参考以下文章

php file_get_contents 和 curl_exec 不适用于外部文件

File.Move 不适用于 UNC 路径

绝对路径不适用于 WCF 服务

cURL 不适用于 WAMP

验证不适用于引导文件上传

Dropzone多个文件上传不适用于Excel文件