インターネットでアクセスできるファイルのファイルサイズを調べたいのですが、
何か方法があるでしょうか?
例えば http://www.xxxtest.co.jp/test/index.html
ファイルサイズが知りたいのです。
また、ファイルの更新日も知る方法があるでしょうか?
よろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (6件)

>できればHTML固有のお決まり事みたいのを抜きでの方がよいのです。



HTMLのヘッダではなくてHTTPのヘッダです

相手側のWebサーバーが対応していれば、Content-LengthやLast-Modifiedを
自動的に付けてくれます(LZHやTXTでも)
    • good
    • 0
この回答へのお礼

ご指摘ありがとうございます。
ちょっと違う方法ですが、できました。
今の所、ほとんどのサーバが対応しているみたいで、
問題なく取得できました。
ありがとうございました。

お礼日時:2001/06/12 11:15

Microsoft Internet Transfer Controlを使えばできます。



Dim strBuf As String
'バッファへデータ取り込み
strBuf = Inet1.OpenURL(strURL)

これで、指定したURLのファイルの内容が取得できます。
こんなんでいいんでしょうか?

この回答への補足

ヘルプを見てみたら、この方法だとファイルの内容が
取得できちゃうような感じでした。
この方法でも、ファイルのサイズを取得できるのでしょうか?
でも、とりあえず、todo36さんの方法で行きます。

補足日時:2001/06/12 11:16
    • good
    • 0

>JavaScriptとかVB ScriptをHTMLに埋め込んでおいて


これは、不特定のHTMLではなく、自分とこのホームページの更新日やサイズを知るときに使えるんじゃないかというアイディアです。
HTML中にサイズ等を調べてCookieに書き出すJavaScriptを記述して、一度そのページを表示させます。すると、ローカルのHDD内にそのCookieが保存されるので、それを解析すればいいんじゃないかなぁ、と。

こっちは、Windows付属のTELNETっていう通信ソフトを使って、目的となるサイトに接続し、そのサーバにサイズなどを問い合わせるって方法ですね。
SHELLコマンドでTELNETを操作し、その実行結果をリダイレクトでファイルに落とし、そのファイルを解析すれば良いんじゃないかと。
TELNETやHTTPに関する知識は要りますが、プログラムの作成自体はそれほど複雑ではないように思います。

TELNETとHTTPについては、今月号の月間ASCII,日経WinPC,DOS/Vパワーレポートのどれかに載ってたと思います。(多分、月アス)
記憶の限りでは、その記事を読めば、必要なコマンドの類は網羅できると思います。(違ってたりして…)
    • good
    • 0
この回答へのお礼

自分の所だけっていうのはネックになりますね。
それとTELNETも使ったことはありますが、
インターネット系のでは使った事がありませんし、
できるだけ簡単な方がよいので...。
todo36さんの案で解決しましたのでとりあえずOKです。
2度も回答ありがとうございました。

お礼日時:2001/06/12 11:22

うーん、JavaScriptとかVB ScriptをHTMLに埋め込んでおいて、一旦Cookieにサイズとか更新日を落として、VBでそのCookieを読み込むとか…



あるいは、TELNETを呼び出して、HTTPサーバにアクセスするとか…

とりあえず思いついたことを書いてみました。
実際に試したわけではないですが、どちらの方法でもうまく行くような気はします。

この回答への補足

ちょっと意味がわかりませんです...。
もっと詳しくお願いします。

補足日時:2001/06/08 16:20
    • good
    • 0

APIによる方法



ファイルサイズはHttpQueryInfoのHTTP_QUERY_CONTENT_LENGTHにより
得ることができます。
ただし、ヘッダにContent-Length:が定義されていることが条件です。

最終更新日は、ヘッダにLast-Modified:が定義されていれば、
HTTP_QUERY_LAST_MODIFIEDにより得ることができますが、ヘッダに
書いていないことが多いようです。

参考URL:http://coolweb00.cool.ne.jp/masapico/api_HttpQue …

この回答への補足

これ場合、結局定義されていなければいけなくて、
さらには定義されていても、
本当に正しい値が入っているという保証もないんですよね?
(あんまりわかっていません。)
また、HTML形式以外のファイルには対応していないって事ですよね?
例えば、LZHとかTXTとか。
できればHTML固有のお決まり事みたいのを抜きでの方がよいのです。
っていっても、index.htmlなんていう例が良くなかったのですが...。
VBでいうFileLenみたいなのが理想なのです。

やっぱりないのでしょうか...。

補足日時:2001/06/08 15:18
    • good
    • 0
この回答へのお礼

ありがとうございます。
こんな方法があったんですね。

お礼日時:2001/06/08 15:18

 VBを使って事なの?


 VBのバージョンは?
 また、コントロールは使用していいの?
 ファイルサイズの取得のタイミングは?
  → 全部のデータを読み切った後では、簡単に出来ますが、読込む前は簡単には出来ません。

 それから...ね。
 ファイルサイズは、単純に、index.htmlのファイルサイズなのか? index.htmlを表示する為のデータサイズなのかによって実現方法が変わってきます。その当りは如何考えているのでしょうか?

 方法はありますが、上記条件により実現可能な方法と実現不可能な物があります。
 単純に言ってしまえば、VC等でコントロールを作成すれば、『表示する為のデータサイズ』以外はなんとかなると思います。

この回答への補足

言葉が足らなくてすいません。

特にバージョンは気にしていないです。
このバージョンならできないけど、
このバージョンであればこのコントロールや
あのDLL(APIも含む)をこのように使用すればできるとか
そんな感じで結構です。

特に、読み込んだりするのではなく、
ただ単純にindex.htmlのファイルサイズが知りたいです。
しいて言うなら、読み込む前に大きいか小さいかの判断をしたいのです。

ちなみにC系の言語はわからないので基本的にVBでのみで
お願いしたいのですが...。

お分かりでしたら、どうぞご教授お願いします。

補足日時:2001/06/08 13:34
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aと関連する良く見られている質問

Qあるサイト(https://search.npb.go.jp/kanp

あるサイト(https://search.npb.go.jp/kanpou/)の認証画面に自動的にID/PASSを入力して、自動的にログインするようなプログラムを作りたいのですが、ID/PASSの入力は問題無く行えるものの、ログインの際にエラー(予期しない操作により、処理中にエラーが発生しました。再度ログインを行ってください。)となります。何が悪いのでしょうか?

【ログイン部分のプログラム】
ieTarget = CreateObject("InternetExplorer.Application")
ieTarget.Visible = TrueValue = KANPOU_ID
.document.Forms(0).elements("password").Value = KANPOU_PASS
.document.forms(0).elements.submit()

ieTarget.navigate("https://search.npb.go.jp/kanpou/")
Do While (ieTarget.busy)
Loop
Do While (ieTarget.document.ReadyState <> "complete")
Loop
With ieTarget
.document.Forms(0).elements("uji.model.4.value_userId").Value =KANPOU_ID
.document.Forms(0).elements("password").Value = KANPOU_PASS
.document.forms(0).elements.submit()
End With

あるサイト(https://search.npb.go.jp/kanpou/)の認証画面に自動的にID/PASSを入力して、自動的にログインするようなプログラムを作りたいのですが、ID/PASSの入力は問題無く行えるものの、ログインの際にエラー(予期しない操作により、処理中にエラーが発生しました。再度ログインを行ってください。)となります。何が悪いのでしょうか?

【ログイン部分のプログラム】
ieTarget = CreateObject("InternetExplorer.Application")
ieTarget.Visible = TrueValue = KANPOU_ID
.document.Forms(0).elem...続きを読む

Aベストアンサー

ループで探してしまいました。そうしたら、57でヒットしました。

> .document.forms(0).elements.submit()

ieTarget.Document.all.Item(57).Click

Qファイルサイズを指定してファイルを作成したいのですが…(fsutilコマンド?)

はじめまして。
VB.NET 2003で、ファイルサイズを指定してファイルを作成したいのですが、実現に四苦八苦しております。

現在、コマンドプロンプトのfsutil file createnewコマンドをVBからshell関数で呼び出すことで実現はできたのですが、
(1)Windows XP以上のOSにしかfsutilコマンドが対応していない。
⇒2000などで実現する方法を教えていただけないでしょうか?(fsutil.exeを2000にコピーする以外でお願いします。)
(2)fsutilコマンドでデスクトップ上のフォルダにファイルが作成できない。
⇒Dドライブには作成できるため、フォルダパスの権限の問題だと思うのですが、回避する方法が思いうかびません。
(デスクトップ上のフォルダは現行ログインユーザのDocument and Settings上のデスクトップなので、フォルダの権限を見ると書き込み可能になっているのですが、fsutilが独自の権限で動作しているもしくは、個人フォルダは他から参照できない設定にしていることが原因でしょうか?)

ご回答いただけると助かります。
よろしくお願いいたします。

はじめまして。
VB.NET 2003で、ファイルサイズを指定してファイルを作成したいのですが、実現に四苦八苦しております。

現在、コマンドプロンプトのfsutil file createnewコマンドをVBからshell関数で呼び出すことで実現はできたのですが、
(1)Windows XP以上のOSにしかfsutilコマンドが対応していない。
⇒2000などで実現する方法を教えていただけないでしょうか?(fsutil.exeを2000にコピーする以外でお願いします。)
(2)fsutilコマンドでデスクトップ上のフォルダにファイルが作成できない。
⇒Dドライ...続きを読む

Aベストアンサー

FileStreamとBinaryWriterでってことではダメでしょうか?

Dim fs as new FileStream( "ファイルパス", IO.FileMode.CreateNew Or IO.FileMode.Truncate)
Dim bw As New IO.BinaryWriter(fs)
Dim arByte() As Byte
' 10,000個の要素準備
ReDim arByte(9999)
bw.Write(arByte)
bw.Close()
fs.Close()
といった具合です

上書きされるのを防止するなら
先頭で
dim fsinfo = new IO.FileInfo("ファイルパス")
if fsinfo.Exists = false then Return
などの処理を追加しましょう

Q現在2017/4/1から2018/3/31までの日月の入った表があります。ボタンを押すと1年足されて

現在2017/4/1から2018/3/31までの日月の入った表があります。ボタンを押すと1年足されて2018/4/1から2019/3/31になる VBAを教えてください。
よろしくお願いします。

Aベストアンサー

ANo3です。

>この様場合どうすれば自動で2/29が入りますか。
データをシリアル値(=Date型)で持つようにしているなら、うるう年は自動的に2/29日が表示できます。
(前回回答の式の表示調整の仕組みをご覧ください)

それよりも、
>表は一月ごとに区切ってあります。
・・という条件は、ご質問文には記載されていませんでしたので、ANo3で提示した式はA列に一年分がズラ~っと並ぶ前提で作成した式になっています。
(うるう年はきちんと反映されますし、翌年度に当たるセルは空白になる関数式になっています)

ひと月ごとに区切って記載するのであれば話が全然違うので、各月用に式を作成し、その月の分だけ表示できる式にしておく必要がありますね。
(添付写真では部分的にしか見えませんが、小計の行やそれ以外にも異なる種類の行が間に入っているようですので…)

>2/28から3/1の間が4行空いてます
添付の写真では2/28から3/1の間は11行空いているように見えますが…???


>表は一月ごとに区切ってあります。
2月を例に考えれば、通常は28日までで以下は空白、うるう年は29日まで表示して以下は空白になれば良いものと解釈しました。(上記の「4行」云々は意味不明なので無視しています)
そのようにするには「その月の範囲」を条件にして、あとは空白になるようにしておけば良いです。
(ANo3は年度外は空白になるようにしてありますが、それを月単位にすれば良い)

例えば2月の場合の例を挙げるとして、
前回同様に、A1セルに平成年度が数値であるものと仮定すれば・・・
その先頭(2/1)のセルには
 =DATEVALUE("h"&$A$1&"/2/1")
次のセルには
 =IF(前のセル<DATEVALUE("h"&($A$1)&"/3/1")-1,前のセル+1,"")
として31日分フィルコピーすれば、ひと月分が表示されるはずです。
(「前のセル」とあるのは2/1を表示しているセル番地のことです)

上記の式だと12か月分に対して、月の部分を少しずつ変えた式を作成する必要がありますが、セル範囲に規則性があったり、月を示すタイトルがどこかにあるような場合は、それを利用することで全部の月で同じ関数式にすることも可能です。
などと言っているよりも、事前設定の1回こっきりの作業だと思いますので、個別に設定してしまった方が早いですし、2月以外は日数が固定なのでもっと簡単な式にでき、他の月に関しては、
 = 前のセル+1
という式で、必要な範囲にフィルコピーすれば十分なはずです。

ANo3です。

>この様場合どうすれば自動で2/29が入りますか。
データをシリアル値(=Date型)で持つようにしているなら、うるう年は自動的に2/29日が表示できます。
(前回回答の式の表示調整の仕組みをご覧ください)

それよりも、
>表は一月ごとに区切ってあります。
・・という条件は、ご質問文には記載されていませんでしたので、ANo3で提示した式はA列に一年分がズラ~っと並ぶ前提で作成した式になっています。
(うるう年はきちんと反映されますし、翌年度に当たるセルは空白になる関数式になっていま...続きを読む

Q1+(1+2)+(1+2+3)....+(1+2+...+N)の計算式をVBで・・

表すにはどうしたらいいでしょうか。
もう3時間くらい格闘しているのですが、
答えを出せません。

Dim S AS LONG
DIm N As Integer

Dim i As Integer
N = Val(TextBox1.Text)

S = 0
i = 1

For i = 1 To N Step 1
S = S + i

Next

Label4.Text = Format(S, "#,##0")

で、1+2+3+...+Nはいけるのですが、
上記の式は、Nが1づつ増えていくにしたがって、
Sの値が1 4 10 20 ...となっていくために、…。

どなたか、回答していただける方がおりましたら、
非常に助かります。
よろしくお願いいたします。。

Aベストアンサー

  Dim total    As Long
  Dim index    As Integer
  Dim index2   As Integer
  Const MAX_VALUE As Integer = 3
  '
  total = 0
  For index = 1 To MAX_VALUE
    For index2 = 1 To index
      total = total + index2
    Next index2
  Next index
  '
  MsgBox (total)
------------------------
こんなカンジでしょうか。

QVB.NET/PictureBoxのサイズ

お世話になります。
VB.NETにて、アプリケーションの実行時にForm上のPictureBoxのサイズをマウスのドラッグで変更できるようにしたいのですが、そういったことは可能でしょうか?

Windows標準のペイントの様に、境界線をドラッグしてサイズ変更する、といったイメージです。

開発環境はVB.NET 2003 です。

Aベストアンサー

こんばんは。

苦肉の策っぽいですが。

フォームにPictureBoxだけを配置して、PictureBoxをフォームにDockプロパティをFillにしてドッキングさせます。

フォームはFormBorderStyleをSizableにすればマウスで大きさを変えられます。PictureBoxはドッキングしているので同じく大きさが変わります。

フォームのTextを無し、ControlBoxをFalseにすればタイトルバーが無くなるのでPictureBoxだけのように見えると思います。

ただしこれだと、フォームを閉じることが出来ないので、このフォームが子となるMDI親フォームを作りそこに表示させると良いでしょう。

どうでしょうか。


人気Q&Aランキング

おすすめ情報