以下はコードです。イメージを文字列に変換します。私はmemorystreamとConvert.ToBase64Stringを使用してイメージの文字列を取得します。私はまたmemorystreamオブジェクトを閉じてフリーにしますが、まだエラーが出ます。 プロセスは、別のプロセスによって使用されているため、ファイル 'File Name'にアクセスできません。私のローカルホストにmemorystreamを使用してvb.netの別のプロセスで既に使用されているファイル
Dim obj As New returnresult
Dim img As System.Drawing.Image
Dim memstream As System.IO.MemoryStream
Dim randomcls As New Random
Dim strImagePath as string="d:\a.jpg"
Try
Dim tmpFileName As String = ""
tmpFileName = randomcls.Next(1, 10) & System.IO.Path.GetExtension(strImagePath)
If System.IO.File.Exists(Server.MapPath("tmp\" & tmpFileName)) Then
System.IO.File.Delete(Server.MapPath("tmp\" & tmpFileName))
End If
System.IO.File.Copy(strImagePath, Server.MapPath("tmp\" & tmpFileName))
img = System.Drawing.Image.FromFile(Server.MapPath("tmp\" & tmpFileName))
memstream = New System.IO.MemoryStream()
img.Save(memstream, System.Drawing.Imaging.ImageFormat.Jpeg)
obj.strImage = Convert.ToBase64String(memstream.ToArray)
memstream.Close()
Return obj
Catch ex As Exception
Return obj
Finally
obj = Nothing
img = Nothing
memstream.Close()
memstream = Nothing
randomcls = Nothing
End Try
ramdomクラスが同じ番号のファイルを生成して削除する場合。それは私にエラーを与える。
すべての一時ファイル名生成ロジックを['Path.GetTempFileName()'](https://msdn.microsoft.com/en-us/library/system.io.path.gettempfilename v = .110).aspx)。 –
私はこれをどのように使うべきか簡単に説明できますか?私は一時的な場所にコピーしていない場合は、直接同じファイルを変換するためにそのファイルを使用するため。 – vjMarket
作成するファイルが10個だけで済むので、私は一時ファイル名のロジックを使用します。だから使えない。私に他の選択肢を教えてください。 – vjMarket