Python 2.7 用python上传文件

Python 2.7 用python上传文件,python-2.7,upload,python-requests,Python 2.7,Upload,Python Requests,我对编程相当陌生,我正在尝试编写一个程序,将文件上传到网站。我真的不知道我做错了什么。无法上载该文件。我认为我的问题与多部分表单数据有关,但如果我错了,我不会感到惊讶 import requests, os, sys url = "myURL" uploadFile = {'ILWinterConditions.kmz': open('C:\\Users\\JOC-001\\Documents\\GIS\\IDOT\\ILWinterConditions.kmz', 'rb')} payl

我对编程相当陌生,我正在尝试编写一个程序,将文件上传到网站。我真的不知道我做错了什么。无法上载该文件。我认为我的问题与多部分表单数据有关,但如果我错了,我不会感到惊讶

import requests, os, sys

url = "myURL"

uploadFile = {'ILWinterConditions.kmz': open('C:\\Users\\JOC-001\\Documents\\GIS\\IDOT\\ILWinterConditions.kmz', 'rb')}

payload = {

    'fname': 'myfname',

    'lname': 'mylname',

    'org': 'myorg',

    'phone': 'myphone',

    'email': 'myemail',

    'datadescrip': 'mydatadesc',

    'uploadedfile': 'C:\\Users\\JOC-001\\Documents\\GIS\\IDOT\\ILWinterConditions.kmz'

}

r = requests.post(url, verify = False, auth=('myUsername','mypassword'), files=uploadFile, data=payload)
print r.content
下面是我从print得到的回复,文件没有上传

<head>

    <title>*I have censored this*</title>

    <link rel="stylesheet" href="styles.css"/>

</head>



<body>

    <script type="text/javascript">

        // Add other extensions here if we want to allow other files to be

        // uploaded.  Check is not case-sensitive.  Will also be checked on

        // the server.

        var allowedExtensions = [ "kml", "kmz", "jpg", "png", "csv" ];

        var maxSize = 12 * 1024*1024;

        var errorMessage = "Only .csv, .kml, .kmz, .jpg, or .png files up to 12MB are accepted!";



        // Checks that the file meets our criteria.  This is just for user

        // convenience-- to catch problems before they attempt to do the

        // upload.  The file will be checked again on the server too.

        function FileIsOkay() {

            var fileInput = document.getElementById('uploadedFile');



            // First check the file's extension

            var fileName = fileInput.value;

            var fileExtension = fileName.substr(fileName.lastIndexOf('.') + 1).toLowerCase();

            var extensionOK = false;

            for (var i=0; i<allowedExtensions.length; ++i) {

                if (fileExtension == allowedExtensions[i].toLowerCase()) {

                    extensionOK = true;

                    break;

                }

            }

            if (! extensionOK) {

                alert(errorMessage);

                return false;

            }



            // Now check the file's size.

            // Doesn't work in IE, but that's okay... it'll get checked on

            // the server any way.

            if (fileInput.files) {

                var file = fileInput.files[0];

                if (file) {

                    if (file.size > maxSize) {

                        alert(errorMessage);

                        return false;

                    }

                }

            }



            return true;

        }

    </script>



    <div class="title">

        <img src="webdavtitle.png"/>

    </div>



    <form method="POST" action="uploader.php" enctype="multipart/form-data" onsubmit="return FileIsOkay();" class="fileForm">

        <table class="detailsTable">

            <tr>

                <td class="inputLabel">First Name:</td>

                <td class="inputField"><input type="text" name="fname" size="40"></td>

            </tr>

            <tr>

                <td class="inputLabel">Last Name:</td>

                <td class="inputField"><input type="text" name="lname" size="40"></td>

            </tr>

            <tr>

                <td class="inputLabel">Organization/Agency:</td>

                <td class="inputField"><input type="text" name="org" size="40"></td>

            </tr>

            <tr>

                <td class="inputLabel">Phone (DSN or Com):</td>

                <td class="inputField"><input type="text" name="phone" size="40"></td>

            </tr>

            <tr>

                <td class="inputLabel">Email:</td>

                <td class="inputField"><input type="text" name="email" size="40"></td>

            </tr>

            <tr>

                <td class="inputLabel">Data Description:</td>

                <td class="inputField"><input type="text" name="datadescrip" size="40"></td>

            </tr>

            <tr>

                <td class="inputLabel">

                    Choose a .kml, .kmz, .jpg,<br/>

                    or .png file to upload:

                </td>

                <td class="inputField">

                    <input id="uploadedFile" name="uploadedfile" size="40" type="file"/>

                </td>

            </tr>

            <tr>

                <td></td>

                <td class="inputField"><input type="submit" value="Upload File"></input></td>

            </tr>

        </table>

    </form>



    <div class="footer">

        <img border="0" src="horiz_grey_line.gif">

    </div>

    <div class="footer">

        <a href="I Have censored this"><img border="0" src="contacthelp.png"></a>

    </div>

    <div class="footer">

        <a href="*I have censored this*"><img border="0" src="nc_address.gif"></a>

        <a href="*I have censored this*"><img border="0" src="nc_webpolicy.gif"></a>

    </div>

</body>


*我已经审查了这个*
//如果我们想允许其他文件被删除,请在此处添加其他扩展名
//上传。支票不区分大小写。也将在
//服务器。
var allowedExtensions=[“kml”、“kmz”、“jpg”、“png”、“csv”];
var maxSize=12*1024*1024;
var errorMessage=“仅接受最大为12MB的.csv、.kml、.kmz、.jpg或.png文件!”;
//检查文件是否符合我们的标准。这只是为了用户
//便利性——在问题试图解决之前抓住问题
//上传。该文件也将在服务器上再次检查。
函数FileIsOkay(){
var fileInput=document.getElementById('uploadedFile');
//首先检查文件的扩展名
var fileName=fileInput.value;
var fileExtension=fileName.substr(fileName.lastIndexOf('.')+1.toLowerCase();
var extensionOK=false;
对于(var i=0;i

我发现了这个代码的问题。它应该是

uploadFile = {'uploadedfile': open('C:\\Users\\JOC-001\\Documents\\GIS\\IDOT\\ILWinterConditions.kmz', 'rb')}
“有效负载”
不需要


'uploadedfile':'C:\\Users\\JOC-001\\Documents\\GIS\\IDOT\\ILWinterConditions.kmz'

url的价值是什么?@Vincent Beltman,你需要url吗?这是一个军事网站,如果可能的话,我希望不要发布。@Vincent Beltman,如果需要的话,我可以给你url。确保你的大小合适。可以上传f吗使用浏览器在网站上创建ile?@VincentBeltman,是的。我可以毫无问题地手动上载该文件。我在html响应“浏览到我的文件”下填写“多部分表单数据”下的所有数据字段列表,然后点击“上载”。但代码本身并没有这样做。我感觉好像我写了什么错误,但我不知道如何操作找出问题所在。