2013-11-20 2 views
2

저는 Python을 처음 사용하며 첫 번째 게시물입니다. TXT 파일을 서버에 업로드하고 싶습니다 (현재로서는 로컬 호스트입니다). 매번 스크립트를 실행하고 로컬 파일을 업로드하고 서버에서 업데이트합니다. 나는 Requests 모듈서버에 업로드하기위한 Python 스크립트

import requests, time 
url ='http://192.168.49.205/test/database/data.txt' # where i want to write 
files = {'file':('data.txt','C:\Python27\data.txt','rb')} 
#r = requests.post(url,files=files) # this works too 

r= requests.post('http://192.168.49.205/test/database/data.txt', 
data={'upload_type': 'standard',   'upload_to': '0'},files=files) 

print r.status_code 
print r.text 

data.txt가 업데이트되지를 사용하고 있습니다. 이전 데이터를 봅니다. (파일을 만들 때 값을 넣었습니다.) PHP 나 HTML에서 Forms를 사용하지 않습니다. 메소드로 업로드 할 수 있습니까?

믿을만하다. 나는 질문을 게시 한 후 약간의 명확성을 얻었습니다. 자, 서버 측에서 클라이언트를 청취하는 PHP 파일이 있습니다. 다음은 "post.php"입니다. 그래서, 이것은 클라이언트 쪽의 텍스트 파일을 대체 할 것입니다. PHP 파일은 클라이언트에서 이름, 작업, 값을 얻고 (로컬) 서버의 "a.txt이"

<?php  
if(isset($_GET["Name"])){ 
$name=$_GET["Name"]; 
} 

if(isset($_GET["Task"])){ 
$task=$_GET["Task"]; 
} 

if(isset($_GET["Value"])){ 
$value=$_GET["Value"]; 
} 

$f=fopen("a.txt","w") or exit("Unable to open file!"); 
fwrite($f,$name); 
fwrite($f," "); 
fwrite($f,$task); 
fwrite($f," "); 
fwrite($f,$value); 
fclose($f); 

?>` 

그래서 지금이

import requests, time 
url = 'http://192.168.49.205/test/test.php' 
post_data = {'Name':'job','Task':'008','Value':'8'} 

r= requests.post('http://192.168.49.205/test/post.php', data= post_data) 


print r.status_code 
print r.text 

STIL과 같은 값을 보면 요청에 게시 도달하지 않습니다 "a.txt". 내가 뭘 놓치고 있니? 제발 조언 해!

+0

오류는 서버 측에있을 수 있습니다. – Matthias

+0

'http : // 192.168.49.205/test/database/data.txt'는'POST' 요청을 받아들입니까? 어떤 종류의 서비스가 듣고 있습니까? –

+0

data.txt는 일반 텍스트 파일입니다. 생각하지 마세요, POST 요청 또는 청취가 필요합니다. 질문이 있은 후에, 나는 생각을하고 있습니다. 따라서 서버 파일은 POST 요청을 받아들이는 PHP 파일이어야합니다. 나의 무지 함을 참아주십시오. – Chandra

답변

2

코드의 파일 내용을 읽지 않습니다. requests documentation 상태 :

파일 - '이름'(옵션) 사전 : 다중 인코딩 업로드 : 파일을 같이하는 객체 (또는 {('파일 이름', fileobj) '이름'}).

두 번째 옵션을 사용하는 것이 좋습니다. 그러나 - 당신이 (문자열, file_obj)의 튜플 대신 3 문자열의 튜플을 전달하는

files = {'file':('data.txt','C:\Python27\data.txt','rb')} 

당신은 문서 표시로 구조를 만드는 하지입니다. 당신은 아마도 이것을하고 싶었을 것입니다 :

files = {'file':('data.txt',open('C:\Python27\data.txt','rb'))} 
관련 문제