C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

No.1970 の関連記事表示

<< 0 >>
■1970  ファイルアップロードに関して
□投稿者/ osam -(2007/03/11(Sun) 17:27:08)

    分類:[レガシ ASP] 

    みなさん
    お世話になります。

    超初心者です。

    ASPを使って、一つの画面でファイルアップロード、ファイルダウンロード、ファイルの削除機能
    を一つのファイルに埋め込む形で作っていきたく、現在製作中です。

    wwwrootの中にdbというフォルダを創り、それをサーバー内のフォルダと仮定して、そこに、エクセルやら、ワードやらを入れ
    一覧を表示するような形をとっています。

    で今↓

    <%@Language= VBScript%>

    <html>
    <title>文章共有・一覧表示</title>

    <body>

    <hr width="550"></hr>

    <!--アップロード処理-->

    <%
    Sub Upload()

    a=Request.TotalBytes
    b=Request.BinaryRead(a)
    set obj=server.createobject("basp21")
    f1=obj.FormFileName(b,"file1")
    fsize1=obj.FormFileSize(b,"file1")
    newf1=Mid(f1,InstrRev(f1,"\")+1)
    l1=obj.FormSaveAs(b,"file1",Server.MapPath(curPath))

    Upload=obj.From(b,"Upload")
    If Request=("Upload") Then
    call Upload
    End If

    EndSub

    %>

    <FORM ACTION="Upload" ENCTYPE="multipart/form-data" METHOD=POST>
    ファイル: <INPUT TYPE=file NAME="file1">
    <INPUT TYPE=SUBMIT NAME=UPLOAD>
    </FORM>
    <%
    curpath="./db"

    Set objFso = Server.CreateObject("Scripting.FileSystemObject")
    Set fld=fso.GetFolder(Server.MapPath(curPath))

    %>

    <tr>
    <td>
    <table border="1">
    <tr>
    <th nowrap="nowrap">ファイル名</th>
    <th nowrap="nowrap">サイズ</th>
    <th nowrap="nowrap">ファイルタイプ</th>
    <th nowrap="nowrap">最終更新日</th>
    <th nowrap="nowrap">ダウンロード</th>
    <th nowrap="nowrap">処理</th>
    </tr>

    <%
    For Each sFld In fld.SubFolders
    %>

    <tr>
      <td nowrap="nowrap"><p><%=sFld.Name %></p></td>
      <td nowrap="nowrap"></ br></td>
      <td nowrap="nowrap">ファイル フォルダ</td>
      <td nowrap="nowrap"><%=sfld.DateLastModified %></td>
    </tr>

    <%

    Next
    For Each fl In fld.Files

    %>

    <tr>
    <td nowrap="nowrap"><p><%=fl.Name%></p></td>
    <td nowrap><%=Int(fl.Size/1024) & "KB" %></td>
    <td nowrap><%=fl.Type %></td>
    <td nowrap><%=fl.DateLastModified %></td>

    <!--ダウンロードのボタン↓-->
    <td><input type="button" name="Download" value="Download" onClick="Download_Click('<%=fl.Name%>')"></td>

    <!--削除のボタン↓-->
    <td><form method="post" action="kyouyuorg1.asp">
    <input type="hidden" name="delete" value="yes">
    <input type="button" value="削除">
    </form></td>
    </tr>

    <%
    Next
    End Sub
    %>

    </table>
    </body>
    </html>

    ここまで作ったのですが、一覧すら表示しなくなってしまい、
    お手上げ状態です。

    どなたかご指導いただける幸いです。
    何卒よろしくお願い申し上げます。


親記事 /過去ログ10より / 関連記事表示
削除チェック/

■1972  Re[1]: ファイルアップロードに関して
□投稿者/ 魔界の仮面弁士 -(2007/03/11(Sun) 19:51:21)
    No1970 (osam さん) に返信
    とりあえず、HTML の文法違反がいろいろと気にかかりますが、
    コード部分で目についた所を、順次指摘してみると:
    
    
    ==== 問題点(0) ==== [Server Side]
    暗黙変数に頼ったスクリプトは、スペルミスなどの問題点を分りにくくします。
    「Option Explicit」「Dim」を適切に利用するようにしましょう。
    
    
    ==== 問題点(1) ==== [Server Side]
    >   Sub Upload() 
    
    この「Upload プロシージャ」を呼び出している部分が、このコード中には一切ありませんよね。
    
    ですから、最後の End Sub 部分までがゴッソリ処理されずに、
    > 一覧すら表示しなくなってしまい、
    という状況になっているわけです。これが今回の最大の問題でしょう。
    
    
    ==== 問題点(2) ==== [Server Side]
    > If Request=("Upload") Then 
    
    これは実質上、
     If CStr(Request) = "Upload" Then
    のような意味で解釈されてしまうため、このコードではエラーになるはずです。
    この部分では、どのような判定を行わせたいのでしょうか?
    
    
    ==== 問題点(3) ==== [Server Side]
    > l1=obj.FormSaveAs(b,"file1",Server.MapPath(curPath))
    
    ここで指定している curPath 変数は、この時点では空っぽ(Empty)なので、
    MapPath メソッドが実行時エラーとなってしまうでしょう。
    
    
    ==== 問題点(4) ==== [Server Side]
    > EndSub
    
    「EndSub」というステートメントはありません。スペルミスでしょうか?
    「End Sub」ならば使えますけど、それは最後の方に記述済みですよね。
    
    確認なのですが、先の「Sub Upload()」に対応するプロシージャの終端は、
    この「EndSub」の行を想定しているのでしょうか? それとも、
    コードの最後の方に記述した「End Sub」の行なのでしょうか?
    
    
    ==== 問題点(5) ==== [Client Side / HTML]
    > <FORM ACTION="Upload" ENCTYPE="multipart/form-data" METHOD=POST> 
    
    この場合はおそらく、action="Upload.asp" にする必要があるのでは。
    削除ボタンの方は、action="kyouyuorg1.asp" と指定されていますので。
    
    # IIS の設定等によっては、action="Upload" でも呼べますけれども…。
    
    
    ==== 問題点(6) ==== [Client Side / Script]
    > <input type="button" name="Download" value="Download" onClick="Download_Click('<%=fl.Name%>')">
    
    ここで指定されている「Download_Click」というスクリプトが定義されていないようです。
    script タグを追加して、対応する JScript または JavaScript のコードを指定しましょう。
    
    
    ==== 問題点(7) ==== [Server Side]
    > <td nowrap><%=Int(fl.Size/1024) & "KB" %></td> 
    
    問題点というほどでも無いですが、「Int(fl.Size/1024)」という処理は、
    「fl.Size \ 1024」 にするとよいかと思います。
    
    それと、1 MB を超えるファイルのことも考慮に入れて、
    FormatNumber( fl.Size \ 1024, 0, False, False, True)
    のように、3桁ごとの区切り記号を表示するとなお良いかも。
    
    
    ==== 問題点(8) ==== [Client Side / Script]
    > <!--削除のボタン↓--> 
    > <td><form method="post" action="kyouyuorg1.asp"> 
    > <input type="hidden" name="delete" value="yes"> 
    > <input type="button" value="削除"> 
    > </form></td> 
    
    これだと、複数のファイルがあったときに、どのファイルを削除したいのかが
    kyouyuorg1.asp 側で判断できませんよね。
    ファイル名(またはそれに相当する情報)も、hidden で送信しましょう。
記事No.1970 のレス /過去ログ10より / 関連記事表示
削除チェック/

■1974  Re[2]: ファイルアップロードに関して
□投稿者/ osam -(2007/03/11(Sun) 21:21:00)
    魔界の仮面弁士様

    ご指摘大変ありがとうございました。

    とりあえずやってみたいと思います。

    また報告いたしますので、教えていただけると幸いです。

    何卒よろしくお願い申し上げます。
記事No.1970 のレス /過去ログ10より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -