2011-09-06 18 views
0

投稿データをローカルファイルに保存しようとしました。私は、ブラウザで私がnsIUploadChannel - 接続がリセットされました

を参照してください、それを行う場合は、ページがロード あったが、接続は、サーバーへの接続がリセットされた をリセットしました。サイトが一時的に使用できないか、ビジー状態になっている可能性があります。もう一度 を少し試してみてください。 ページを読み込めない場合は、 コンピュータのネットワーク の接続を確認してください。お使いのコンピュータまたはネットワークが ファイアウォールまたはプロキシによって保護されている場合は、 にFirefoxがWebへのアクセスを許可されていることを確認してください。

私のコードがあります:

<?xml version="1.0"?> 
<?xml-stylesheet href="chrome://global/skin/" type="text/css"?> 
<window id="yourwindow" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> 

<script> 
<![CDATA[ 
var MIKI = 
{ 
observe: function(subject, topic, data) 
{ 
    if (topic == "http-on-modify-request") 
    { 
    var httpChannel = subject.QueryInterface(Components.interfaces.nsIHttpChannel); 
    if(httpChannel.requestMethod == "POST"){ 
    var uploadChannel = httpChannel.QueryInterface(Components.interfaces.nsIUploadChannel); 
    var uploadChannelStream = uploadChannel.uploadStream; 
    uploadChannelStream.QueryInterface(Components.interfaces.nsISeekableStream);     
    uploadChannelStream.seek(0,0);        
    var stream = Components.classes['@mozilla.org/scriptableinputstream;1'].createInstance(Components.interfaces.nsIScriptableInputStream); 
    stream.init(uploadChannelStream); 
    var data = stream.read(stream.available()); 
    data = data.split(/\r\n\r\n/).slice(1).join('\r\n\r\n'); 
    var buffer = httpChannel.URI.spec + " " + data+ "\n"; 
    if(data != '') fos.write(buffer, buffer.length); 
    } 
} 
} 
}; 
var file = Components.classes["@mozilla.org/file/directory_service;1"].getService(Components.interfaces.nsIProperties).get("Desk", Components.interfaces.nsIFile); 
file.append("http-request-log.txt"); 
var fos = Components.classes["@mozilla.org/network/file-output-stream;1"].createInstance(Components.interfaces.nsIFileOutputStream); 
fos.init(file, 0x02 | 0x08 | 0x10, -1, 0); 
var observerService = Components.classes["@mozilla.org/observer-service;1"].getService(Components.interfaces.nsIObserverService); 
observerService.addObserver(MIKI, "http-on-modify-request", false);  
]]> 
</script> 
</window> 

私が間違って何?

答えて

1

アップロードストリームからデータを読み込んでファイルに書き込むため、ストリームポインタを最後に残している可能性があります(要求が発生したときにPOST本体が空になっているように見えます)。データを読み終えたら、ストリームの先頭に戻ってみてください。

関連する問題