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

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

C# と VB.NET の入門サイト

Re[7]: 画像のUPロード時にファイル場所の書き込み


(過去ログ 49 を表示中)

[トピック内 11 記事 (1 - 11 表示)]  << 0 >>

■26543 / inTopicNo.1)  画像のUPロード時にファイル場所の書き込み
  
□投稿者/ 初心者 (153回)-(2008/10/14(Tue) 01:21:23)

分類:[ASP.NET (VB)] 

お世話になります
下記URLを参考にUPするサイトを作成しましたが
ボタンクリック時にファイル名をIDの番号に変えて、場所をDBに書き込ませる機能を追加するにはどのようにすればよいのでしょうか?
DBはaccess2003が理想です。
http://www.atmarkit.co.jp/fdotnet/dotnettips/321uploadform/uploadform.html

現在は下記です(Default.aspx)
<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="_Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>無題のページ</title>
</head>
<body>

<form id="Form2" method="post" runat="server" enctype="multipart/form-data">
<P>送信するファイルを指定して、[送信]ボタンを押してください。</P>
<P><INPUT type="file" id="File1" runat="server"></P>
<P>
<asp:Button id="Button1" runat="server" Text="送信" />
</P>

</body>
</html>


(Default.aspx.vb)
Partial Class Default
Inherits System.Web.UI.Page
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

Dim posted As HttpPostedFile = Request.Files("userfile")

If Not posted.FileName = "" Then
posted.SaveAs( _
"C:\img\" _
& System.IO.Path.GetFileName(posted.FileName))
End If
End Sub
End Class

どなたかご存知の方なにとぞご教授願います。
引用返信 編集キー/
■26545 / inTopicNo.2)  Re[1]: 画像のUPロード時にファイル場所の書き込み
□投稿者/ やじゅ (696回)-(2008/10/14(Tue) 01:37:32)
やじゅ さんの Web サイト
No26543 (初心者 さん) に返信
> お世話になります
> 下記URLを参考にUPするサイトを作成しましたが
> ボタンクリック時にファイル名をIDの番号に変えて、場所をDBに書き込ませる機能を追加するにはどのようにすればよいのでしょうか?
> DBはaccess2003が理想です。

もう少し仕様を明確に!
引用返信 編集キー/
■26595 / inTopicNo.3)  Re[2]: 画像のUPロード時にファイル場所の書き込み
□投稿者/ 初心者 (154回)-(2008/10/15(Wed) 12:40:40)
No26545 (やじゅ さん) に返信
> ■No26543 (初心者 さん) に返信
>>お世話になります
>>下記URLを参考にUPするサイトを作成しましたが
>>ボタンクリック時にファイル名をIDの番号に変えて、場所をDBに書き込ませる機能を追加するにはどのようにすればよいのでしょうか?
>>DBはaccess2003が理想です。
>
> もう少し仕様を明確に!
お返事ありがとうございます
素人なりに調べたのが先ほどのURLでVisualstudio2005standardを購入して実装したらきちんと動いてくれましたが
追加機能が必要となり質問となります。

必要な追加機能(新規)
■現在のままではUPファイル名前重複等が発生してはいけないのでIDに置き換えて管理をしたい。
■UP後の回覧時用にデータベースにファイル場所を書き込みさせたい。
■UPだけではなくほかの文字(題名や記事等)同時に入力させたい。

上記三点が理想機能でございます。
引用返信 編集キー/
■26613 / inTopicNo.4)  Re[3]: 画像のUPロード時にファイル場所の書き込み
□投稿者/ 純@WAS (16回)-(2008/10/15(Wed) 17:18:54)
FileUpLoadコントロールはいかがでしょう???
(もう殆ど実装していてなんですが…)

C#ですが、類似のものを作った事はあります。
VBはかなりブランクがあるので、構文が間違えていたら適宜訂正して下さい。

まず、aspx側にFileUpLoadコントロールを配置します(コントロールIDはfupAttachFileとします)
そうしたら、送信ボタンクリックイベント(ASPコントロールと仮定します)に以下の通り書きます。

'どうやら参照したファイル名を手入力で変更するとaspxのコードがファイルに吐かれる現象があるようです。
If Not fupAttachFile.FileBytes.Length = 0 Then
Dim uploadFileName as string = fupAttachedFile.FileName
fupAttachFile.SaveAs(ConfigurationManager.AppSettings[ここにインデクス] + "\\" + fileId + uploadFileName)
End If

上記で注目して頂きたいのが
・ConfigurationManager.AppSettings[ここにインデクス]
・fileId
です。

ファイルパスについては、構成ファイル(web.config)で定義しています。
まらfileIdはファイルのIDを割り当てるためのメソッドを作成しています。

なので、ファイル名がabc.txt、ファイルIDが001の場合、
アップロードされるファイル名は 「001abc.txt」となり、
ファイルパスは構成ファイルで定義したファイルパスになります。

>UP後の回覧時用にデータベースにファイル場所を書き込みさせたい。
上記のように構成ファイルで定義すれば、それをDBにInsertするだけです。

>UPだけではなくほかの文字(題名や記事等)同時に入力させたい。
これはアップロードしたファイルに対して、テキストボックスやリストボックスで記載した内容を反映したいということでしょうか?
別ユーザが開いているときにファイルを変更、修正する操作は競合を引き起こすと思いますが…勘違いならスイマセン

ただ、アップロードしたファイルを修正、変更したりするのであれば、
StreamReaderとStreamWriterを使用すれば出来ます。
StreamWriterにAppendAllTextや、AppendAllBytesがあったと記憶しているので、それらを使えば大丈夫なはずです。
…VBのサンプルをかけないので文言で失礼します。
引用返信 編集キー/
■26617 / inTopicNo.5)  Re[4]: 画像のUPロード時にファイル場所の書き込み
□投稿者/ なちゃ (181回)-(2008/10/15(Wed) 17:41:23)
元のファイル名は含めない方がいいでしょう。
IDはDB側でシーケンスを取るのが多分無難ですね。
ファイルの属性はテキストボックスとかに入れさせて
DB登録時に同時に入れたらいいと思います。

引用返信 編集キー/
■26625 / inTopicNo.6)  Re[3]: 画像のUPロード時にファイル場所の書き込み
□投稿者/ Jitta (524回)-(2008/10/15(Wed) 20:41:14)
Jitta さんの Web サイト
No26595 (初心者 さん) に返信
で?

> ■現在のままではUPファイル名前重複等が発生してはいけないのでIDに置き換えて管理をしたい。
ID は、誰が、いつ、どうやって、決めるのでしょう?

> ■UP後の回覧時用にデータベースにファイル場所を書き込みさせたい。
ファイルを保存する場所は、誰が、いつ、どうやって、決めるのでしょう?

> ■UPだけではなくほかの文字(題名や記事等)同時に入力させたい。
それらは、どこに保存し、いつ、どうやって、誰に、見せるのでしょう?


プログラムの初心者であっても、初心者ならなおさら、疑問に思いませんか?

-----

最初の投稿に「posted.SaveAs」というコードがあります。SaveAs なのですから、ここでファイルの保存(Save)をしているわけです。As がついているので、名前も指定しています。したがって、ここに指定されている「System.IO.Path.GetFileName(posted.FileName)」を ID に変えれば、最初の「ID に置き換えて保存したい」は実現できます。

ということがわからないとは、思えなかったのですが、どうでしょう?

引用返信 編集キー/
■26793 / inTopicNo.7)  Re[4]: 画像のUPロード時にファイル場所の書き込み
□投稿者/ 初心者 (160回)-(2008/10/21(Tue) 12:10:10)
No26625 (Jitta さん) に返信
> ■No26595 (初心者 さん) に返信
> で?
>
>>■現在のままではUPファイル名前重複等が発生してはいけないのでIDに置き換えて管理をしたい。
> ID は、誰が、いつ、どうやって、決めるのでしょう?
>
>>■UP後の回覧時用にデータベースにファイル場所を書き込みさせたい。
> ファイルを保存する場所は、誰が、いつ、どうやって、決めるのでしょう?
>
>>■UPだけではなくほかの文字(題名や記事等)同時に入力させたい。
> それらは、どこに保存し、いつ、どうやって、誰に、見せるのでしょう?
>
>
> プログラムの初心者であっても、初心者ならなおさら、疑問に思いませんか?
>
> -----
>
> 最初の投稿に「posted.SaveAs」というコードがあります。SaveAs なのですから、ここでファイルの保存(Save)をしているわけです。As がついているので、名前も指定しています。したがって、ここに指定されている「System.IO.Path.GetFileName(posted.FileName)」を ID に変えれば、最初の「ID に置き換えて保存したい」は実現できます。
>
> ということがわからないとは、思えなかったのですが、どうでしょう?
>

お返事ありがとうございます。
10日で覚えるASP2.0を購入してきましたがまったく持ってわかりません
> ID は、誰が、いつ、どうやって、決めるのでしょう?
> ファイルを保存する場所は、誰が、いつ、どうやって、決めるのでしょう?
上記を考えてFormView内で作成していくイメージかなと。。
通常入力ならFormView Insrtで可能かとそのときAccess側でオートメンバにしていれば勝手にIDがふれらるはずなんですが

> それらは、どこに保存し、いつ、どうやって、誰に、見せるのでしょう?
保存はCにimgファルダを作成してそこに保存させる予定です(TEST用)
回覧はテキストでGridViewを絞り込みボタンでFormViewで明細といった感じを考えてます(MultiView)

引用返信 編集キー/
■26796 / inTopicNo.8)  Re[5]: 画像のUPロード時にファイル場所の書き込み
□投稿者/ ロック (127回)-(2008/10/21(Tue) 13:32:32)
imgという単語から画像掲示板のような物を想像したので参考までに。。。
#別スレに書いた内容をほぼコピペですが

「Visual Studio 2005でいってみよう〜ASP.NET 2.0編 」という本に
画像掲示板の作成が載っています。
そして、この書籍の紹介サイトでこの本に載っているサンプルが
DLできるので参考にしてみては?
ああ、本も買うといいかも(別に翔泳社のまわしものじゃないです)

http://seshop.com/detail.asp?pid=8094

ちなみに10日で覚えるASP2.0と同じ著者です。
自分で本を読みながら、打ちこんでいたので気づきませんでしたが
VS2005だと、サンプルDLしてプロジェクト読み込んだだけでは
コンパイルエラーになりました。(エラー内容は詳しくみてません)
あとこの本では、FileUpload使っています。
さらに、DBはSQL Serverですが、ちょっと変えれば大丈夫だと思います。

>10日で覚えるASP2.0
そういえば、買ったけど読んでないな・・内容くらいは把握しておこうかな

引用返信 編集キー/
■26813 / inTopicNo.9)  Re[6]: 画像のUPロード時にファイル場所の書き込み
□投稿者/ 初心者 (161回)-(2008/10/21(Tue) 15:01:30)
No26796 (ロック さん) に返信
> imgという単語から画像掲示板のような物を想像したので参考までに。。。
> #別スレに書いた内容をほぼコピペですが
>
> 「Visual Studio 2005でいってみよう〜ASP.NET 2.0編 」という本に
> 画像掲示板の作成が載っています。
> そして、この書籍の紹介サイトでこの本に載っているサンプルが
> DLできるので参考にしてみては?
> ああ、本も買うといいかも(別に翔泳社のまわしものじゃないです)
>
> http://seshop.com/detail.asp?pid=8094
>
> ちなみに10日で覚えるASP2.0と同じ著者です。
> 自分で本を読みながら、打ちこんでいたので気づきませんでしたが
> VS2005だと、サンプルDLしてプロジェクト読み込んだだけでは
> コンパイルエラーになりました。(エラー内容は詳しくみてません)
> あとこの本では、FileUpload使っています。
> さらに、DBはSQL Serverですが、ちょっと変えれば大丈夫だと思います。
>
> >10日で覚えるASP2.0
> そういえば、買ったけど読んでないな・・内容くらいは把握しておこうかな
>
お返事ありがとうございます
10日で覚えるASP2.0も、確かにFileUpload使ってますが、
UPするときにID名に変更し、DBに保存させる技法がのってませんでした。

Visual Studio 2005でいってみよう〜ASP.NET 2.0編は載っているのでしょうか?
それともどこかにヒントが載っているのでしょうか?
それなら10日で覚えるASP2.0も載っているような気が・・・・
引用返信 編集キー/
■26900 / inTopicNo.10)  Re[5]: 画像のUPロード時にファイル場所の書き込み
□投稿者/ 初心者 (167回)-(2008/10/22(Wed) 17:09:12)
2008/10/22(Wed) 17:13:24 編集(投稿者)
2008/10/22(Wed) 17:11:00 編集(投稿者)
2008/10/22(Wed) 17:10:42 編集(投稿者)

No26617 (なちゃ さん) に返信
> 元のファイル名は含めない方がいいでしょう。
> IDはDB側でシーケンスを取るのが多分無難ですね。
> ファイルの属性はテキストボックスとかに入れさせて
> DB登録時に同時に入れたらいいと思います。
>
お返事ありがとうございます
現在テキストボックスの入力で、ファイル名を変更させてUPできるようになりました。
Jitta さんの言うように

■いつIDを取得するか(テキストボックスに)
■DBにいつ保存させるか等

上記をクリアすればUPページは完成しそうなんですが

*参考URL http://msdn.microsoft.com/ja-jp/library/system.web.ui.webcontrols.fileupload(VS.80).aspx
*現在のコード
<%@ Page Language="VB" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">

Sub UploadButton_Click(ByVal sender As Object, ByVal e As System.EventArgs)

' Specify the path on the server to
' save the uploaded file to.
Dim savePath As String = "C:\img\"

' Before attempting to perform operations
' on the file, verify that the FileUpload
' control contains a file.
If (FileUpload1.HasFile) Then
' Get the name of the file to upload.
Dim fileName As String = FileUpload1.FileName
Dim sevefile = TextBox1.Rows
Dim jpg = TextBox2.Rows
' Append the name of the file to upload to the path.
savePath += TextBox1.Text & TextBox2.Text

' Call the SaveAs method to save the
' uploaded file to the specified path.
' This example does not perform all
' the necessary error checking.
' If a file with the same name
' already exists in the specified path,
' the uploaded file overwrites it.
FileUpload1.SaveAs(savePath)

' Notify the user of the name the file
' was saved under.
UploadStatusLabel.Text = "Your file was saved as " & TextBox1.Text & TextBox2.Text

Else
' Notify the user that a file was not uploaded.
UploadStatusLabel.Text = "You did not specify a file to upload."
End If

End Sub

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)

End Sub
</script>

<html >
<head id="Head1" runat="server">
<title>FileUpload Example</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<h4>Select a file&nbsp; upload</h4>
<h4>

<asp:FileUpload id="FileUpload1"
runat="server">
</asp:FileUpload>
</h4>
<h4>
Select a File Name<br />
<asp:TextBox ID="TextBox1" runat="server" SkinID="<%$ ConnectionStrings:LocalSqlServer %>"></asp:TextBox>
</h4>
<h4>
Select a File Extension
<br />
<asp:TextBox ID="TextBox2" runat="server" ReadOnly="True">.jpg</asp:TextBox></h4>
<h4>
<br />

<asp:Button id="UploadButton"
Text="Upload file"
OnClick="UploadButton_Click"
runat="server" Width="157px">
</asp:Button>

<hr />

<asp:Label id="UploadStatusLabel"
runat="server">
</asp:Label>
</h4>
</div>
</form>
</body>
</html>

どなたかご教授願います
引用返信 編集キー/
■26910 / inTopicNo.11)  Re[7]: 画像のUPロード時にファイル場所の書き込み
□投稿者/ ロック (130回)-(2008/10/22(Wed) 18:56:21)
問題はアップロードではなくファイル名の方でしたか失礼しました。

>■いつIDを取得するか(テキストボックスに)
DBがAccessだと、あまり詳しくないですが
IDの取得は、AccessだとIDで降順ソートした先頭データに+1した値が
最新のIDになると思います。
こういうSQL「SELECT TOP 1 ID FROM support_m ORDER BY ID DESC」で
末尾のデータを1件取得
「テキストボックスに」とありますが、別にID+テキストボックスの内容で
SaveAs()で良いと思います。


サンプルソース書こうと思ったのですが、
ADO.NET周りの記述が無いのでちょと質問。
OleDbConnection()とかOleDbCommand()とかは大丈夫ですか?
この辺を聞いて?だと、ADO.NETを勉強する事をお勧めします。
「10日で覚えるASP2.0」にはこの辺の記述が全くないので不安です。

とりあえず、自分のソースから使えそうなところをコピペして
大体こんな感じでは?というのを記述
#別に意地悪しているわけじゃないですが、C#しか知らないのでC#です(汗)

ボタン押下のイベント直後
OleDbConnection OleCon;
OleCon = new OleDbConnection();
OleCon.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=アクセスファイル.mdb;";
OleCon.Open();
OleDbCommand OleCmd = new OleDbCommand();
OleCmd.Parameters.Clear();
OleCmd.Connection = OleCon;
OleCmd.CommandText = "SELECT TOP 1 ID FROM support_m ORDER BY ID DESC";
Object result = OleCmd.ExecuteScalar();
OleCon.Close();
Int32 iID = Convert.ToInt32(result);
iID++; // これが最新のIDになるのかな

そしたら、テキストボックスの値とこの値を付加したファイル名を作って・・・
という流れになると思いますので
まずは、ADO.NETでSQL文を使ってDBから値を取得するという所からやってみては?
たぶん、それが解決への近道になると思います。

>Visual Studio 2005でいってみよう〜ASP.NET 2.0編は載っているのでしょうか?
>それともどこかにヒントが載っているのでしょうか?
>それなら10日で覚えるASP2.0も載っているような気が・・・・
10日で覚えるASP2.0とVisual Studio 2005でいってみよう〜ASP.NET 2.0編の内容は、
かなり似ていました。
得られる知識はたぶん同じようなものだと思います
が、実際にアプリケーションを作成している分、後者の方が得られる経験は多いです
まあこの辺は、参考までにということで。。

引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -