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响应“浏览到我的文件”下填写“多部分表单数据”下的所有数据字段列表,然后点击“上载”。但代码本身并没有这样做。我感觉好像我写了什么错误,但我不知道如何操作找出问题所在。