出来るのだASP Q&A掲示板(過去LOG)  訪問数 52046 昨日 889 今日 776
    【PR】 パソコン入門からIT専門書まで幅広く取り揃えています。セブン-イレブン受取り手数料無料のセブンアンドワイ。
Topに戻る 掲示板に戻る 検索 削除 管理者

フォルダを作成してファイルのアップロード   ミントさん [2002/06/25 14:24:50] [2218]
  Re:フォルダを作成してファイルのアップロード   ミントさん [2002/06/25 16:45:29] [2219]
    Re:フォルダを作成してファイルのアップロード   くっくさん [2002/06/25 16:52:31] [2220]
    Re:フォルダを作成してファイルのアップロード   北岳さん [2002/06/25 17:02:48] [2221]
      Re:フォルダを作成してファイルのアップロード   ミントさん [2002/06/25 18:29:55] [2222]
        フォルダを作成して複数ファイルの同時アップロード   北岳さん [2002/06/25 19:26:21] [2223]
          Re:フォルダを作成して複数ファイルの同時アップロード   ミントさん [2002/06/26 9:30:25] [2224]
            自己レスです。出来ました!   ミントさん [2002/06/26 10:27:35] [2225]

[2218] フォルダを作成してファイルのアップロード
投稿者:ミントさん 2002/06/25 14:24:50
はじめまして、ミントです。
いつも掲示板を拝見して勉強していますが、今日は分からない事があってカキコしました。

ASPで入力フォームを作成しています。やりたいことは下記の通りです。
@<INPUT Type=file〜>で選択したファイルを、登録ボタンを押したときに、サーバにある指定したディレクトリにフォルダを作成して、ファイルをアップロードさせたいのですが、そういうことはASPで出来ますか?また、fileボックスは3個ありますので繰り返し処理(VBScriptでDo〜LoopやFor〜Next等)
A@でアップロードしたファイルのパスを取得して、テーブルに保存したいと思います。これは可能ですか?

アドバイスを頂ける方、宜しくお願い致します。

*入力フォーム a_new.asp
<HTML>
<HEAD><TITLE>入力フォーム</TITLE></HEAD>
<BODY>
<FORM METHOD="POST" NAME="Form1">
<INPUT TYPE="file" NAME="a_id" VALUE="<%=kanrino%>">
'kanrinoはフォームを開いたときに振られる番号です。
<INPUT TYPE="file" NAME="file1">
<INPUT TYPE="file" NAME="file2">
<INPUT TYPE="file" NAME="file3">
<INPUT TYPE="submit" NAME="a_add">
</FORM>

[2219] Re:フォルダを作成してファイルのアップロード
投稿者:ミントさん 2002/06/25 16:45:29
ミントです。

このページの過去ログからBASP21を見つけてサーバにインストールして
テストをしています。
BASP21のFAQにあるサンプルソースはやってみたところ成功しました。
成功後、下記のように自分でVBScriptも入れて組んでみたのですが、
どうしてもフォルダを作成するところで、エラーが出てしまいます。
どのようにフォルダを作成すればいいでしょうか?
お分かりになる方、アドバイスを宜しくお願い致します。


*入力フォーム a_new.asp

<FORM>タグに「action="up_file.asp"」を追加し、下記
up_file.aspにフォーム内容を送信するようにしています。


*ファイル保存 up_file.asp
<%
Dim ObjFso,ObjFolder,ColFolder
Dim GetFil,newf1,F_Path
Dim bobj,a,b,Fol,F_Name,Up_F

Set ObjFso = Server.CreateObject("Scripting.FileSystemObject")
Set ObjFolder = ObjFso.GetFolder("D:\添付資料\anken")
Set ColFolder = ObjFolder.SubFolders
Fol = Request("a_id") ←全ページのテキストボックスリクエスト
ColFolder.Add(Fol) ←Request("a_id")に入っているNoを名前にし、フォルダを作成。でも、ここが出来ません。
ObjFso.Close
ObjFolder.Close
ColFolder.Close
F_Path = "D:\添付資料\" & Fol & "\"

GetFil = Array("file1","file2","file3")
i = 1
Do Until i > 5
If Fi <> "" Then
Set bobj = Server.CreateObject("Basp21")
a = Request.TotalBytes
b = Request.BinaryRead(a)
FName = bobj.FormFileName(b,GetFil(i-1))
newf1=Mid(FName,InstrRev(FName,"\")+1)
Up_F = bobj.FormSaveAs(barray,GetFil(i-1),F_Path & newf1)
End If
i = i + 1
Loop
%>
<HTML><HEAD><TITLE>File Upload Test</TITLE>
<BODY>
<H1>Testing</H1>
Path = <%=F_Path%><BR>
FNAME = <%=FName%><BR>
file1= <%=newf1%><BR>
len1= <%=Up_F%><BR>
</BODY></HTML>

[2220] Re:フォルダを作成してファイルのアップロード
投稿者:くっくさん 2002/06/25 16:52:31
> どうしてもフォルダを作成するところで、エラーが出てしまいます。
> どのようにフォルダを作成すればいいでしょうか?
> お分かりになる方、アドバイスを宜しくお願い致します。

詳しくは分かりませんが、アクセス権は確認していますか?
書き込み権限などがないといけないのでは?

[2221] Re:フォルダを作成してファイルのアップロード
投稿者:北岳さん 2002/06/25 17:02:48
http://www.telemesse.ne.jp/fish_bird/asp3/vbscript/p003.html
にある、
Set FSO = Server.CreateObject("Scripting.FileSystemObject")
を用い、既存かどうかチェックして、
fold1="C:\Inetpub\www\sample"
If FSO.FolderExists(fold1) =false then FSO.CreateFolder(fold1)
でどうでしょう。

[2222] Re:フォルダを作成してファイルのアップロード
投稿者:ミントさん 2002/06/25 18:29:55
くっくさん、北岳さんお返事ありがとうございました。

入力フォーム「a_new.asp」の<FORM>タグに「ENCTYPE="multipart/form-data"」を追加するのを忘れていました。すみません。
フォルダは事前に書きこみはOKにしてあるので確認したところ大丈夫でした。
北岳さんから教えていただいたように修正して、実行してみましたが
Formからデータを取得できていませんでした。
それもそうですよね、Basp21使うように<FORM>タグを修正したんですから。それで、下記のように修正しました。
データは取得できますが、今度はFileSystemObjectが使えなくなりました。Basp21を使用するとFileSystemObjectは使用できなくなるのでしょうか?
どうしても、「a_id」をフォルダ名にしたいのですが、いい方法があったら、お忙しいところすみませんが、アドバイスをお願い致します。



a = Request.TotalBytes
b = Request.BinaryRead(a)
Set bobj = Server.CreateObject("Basp21")
Fol = bobj.Form(b,"a_id")
Set ObjFso = Server.CreateObject("Scripting.FileSystemObject")
fold1 = "D:\添付資料\" & Fol
If ObjFso.FolderExists(fold1)=false Then ObjFso.CreateFolder(fold1)
F_Path = "D:\添付資料\" & Fol & "\"

[2223] フォルダを作成して複数ファイルの同時アップロード
投稿者:北岳さん 2002/06/25 19:26:21
----------------- /aspfold/1.asp ----------------
<HTML>
<HEAD><TITLE>入力フォーム</TITLE></HEAD>
<BODY>
<p>ファイル送付
<%
x=20020625 'この部分は修正して。
%>
<FORM action="/aspfold/2.asp" METHOD="POST" ENCTYPE="multipart/form-data">
<br><INPUT TYPE="hidden" NAME="a_id" VALUE="<%= x %>">
<br><INPUT TYPE="file" size=90 NAME="file1">
<br><INPUT TYPE="file" size=90 NAME="file2">
<br><INPUT TYPE="submit" value="GO">
</FORM>

----------------- /aspfold/2.asp ----------------
<%
a = Request.TotalBytes
b = Request.BinaryRead(a)
Set bobj = Server.CreateObject("Basp21")
Set ObjFso = Server.CreateObject("Scripting.FileSystemObject")
fol=bobj.form(b,"a_id")
fold1 = "D:\somewhere\" & fol
If ObjFso.FolderExists(fold1)=false Then ObjFso.CreateFolder(fold1)
'以下 http://www.hi-ho.ne.jp/babaq/basp21.html 最下段から流用
f1=bobj.FormFileName(b,"file1")
f2=bobj.FormFileName(b,"file2")
fsize1=bobj.FormFileSize(b,"file1")
fsize2=bobj.FormFileSize(b,"file2")
newf1=Mid(f1,InstrRev(f1,"\")+1)
newf2=Mid(f2,InstrRev(f2,"\")+1)
l1=bobj.FormSaveAs(b,"file1",fold1 & "\" & newf1)
l2=bobj.FormSaveAs(b,"file2",fold1 & "\" & newf2)
%>
<p>サーバの<%=fold1 %>フォルダに
<p><%= newf1 %>
<br><%= newf2 %>
<p>を格納しました。
--------------------------------------------------

[2224] Re:フォルダを作成して複数ファイルの同時アップロード
投稿者:ミントさん 2002/06/26 9:30:25
おはようございます!ミントです。
北岳さんありがとうございました。

北岳さんのアドバイスの通りに修正して実行したら、全て出来たんですが、下記に修正し実行したら出来ませんでした。
同じ事を3回繰り返し処理を行なうので、VBScriptを使いたいのですが、BASP21はVBScriptは使用できないということでしょうか?

*ファイル保存 up_file.aspのスクリプト部分
<%

Dim ObjFso
Dim bobj,a,b,Tenp,Fol,F_Name,Up_F
Dim GetFil,f1,newf1,F_Path,fold1,l1

a = Request.TotalBytes
b = Request.BinaryRead(a)
Set bobj = Server.CreateObject("Basp21")
Set ObjFso = Server.CreateObject("Scripting.FileSystemObject")
Fol = bobj.Form(b,"a_id")
fold1 = "D:\添付資料\" & Fol
If ObjFso.FolderExists(fold1)=false Then ObjFso.CreateFolder(fold1)
F_Path = "D:\添付資料\" & Fol & "\"

GetFil = Array("file1","file2","file3")
i = 1
Do Until i > 3
  If bobj.Form(b,GetFil(i-1)) <> "" Then
  FName = bobj.FormFileName(b,GetFil(i-1))
  newf1=Mid(FName,InstrRev(FName,"\")+1)
  Up_F = bobj.FormSaveAs(b,GetFil(i-1),F_Path & newf1)
  End If
  i = i + 1
Loop
%>

[2225] 自己レスです。出来ました!
投稿者:ミントさん 2002/06/26 10:27:35
北岳さん、出来ました!!)^o^(
file参照ボックスの値取得をFileName取得にして実行したら、
思い通りのことができました。
長々とつき合って頂いてありがとうございました!

*ファイル保存 up_file.aspのスクリプト部分
<%

Dim ObjFso
Dim bobj,a,b,Tenp,Fol,F_Name,Up_F
Dim GetFil,f1,newf1,F_Path,fold1,l1

a = Request.TotalBytes
b = Request.BinaryRead(a)
Set bobj = Server.CreateObject("Basp21")
Set ObjFso = Server.CreateObject("Scripting.FileSystemObject")
Fol = bobj.Form(b,"a_id")
fold1 = "D:\添付資料\" & Fol
If ObjFso.FolderExists(fold1)=false Then ObjFso.CreateFolder(fold1)
F_Path = "D:\添付資料\" & Fol & "\"

GetFil = Array("file1","file2","file3")
i = 1
Do Until i > 3
Fle = bobj.FormFileName(b,GetFil(i-1))←ここでFileName取得に変更
If Fle <> "" Then
newf1=Mid(Fle,InstrRev(Fle,"\")+1)
l1 = bobj.FormSaveAs(b,GetFil(i-1),F_Path & newf1)
End If
i = i + 1
Loop
%>



TreeBBS For ASP V.0.1.3
Program By YasNet