私はアプリケーションに取り組んでいます。そのアプリケーションはユーザーから履歴書を取得する必要があるため、ファイルが存在するかどうかを確認するコードが必要です。
ASP.NET/C#を使用しています。
System.IO
名前空間のExists
クラスのFile
メソッドを使用して、指定したファイルが存在するかどうかを判断できます。
bool System.IO.File.Exists(string path)
MSDNのこちらのドキュメント を見つけることができます。
例:
using System;
using System.IO;
class Test
{
public static void Main()
{
string resumeFile = @"c:\ResumesArchive\923823.txt";
string newFile = @"c:\ResumesImport\newResume.txt";
if (File.Exists(resumeFile))
{
File.Copy(resumeFile, newFile);
}
else
{
Console.WriteLine("Resume file does not exist.");
}
}
}
.NETにファイルが存在するかどうかをテストするには、次を使用できます。
System.IO.File.Exists (String)
if (File.Exists(Server.MapPath("~/Images/associates/" + Html.DisplayFor(modelItem => item.AssociateImage))))
{
<img src="~/Images/associates/@Html.DisplayFor(modelItem => item.AssociateImage)">
}
else
{
<h5>No image available</h5>
}
画像を表示する前に存在するかどうかを確認するために、このようなことをしました。
これを試して:
string fileName = "6d294041-34d1-4c66-a04c-261a6d9aee17.jpeg";
string deletePath= "/images/uploads/";
if (!string.IsNullOrEmpty(fileName ))
{
// Append the name of the file to previous image.
deletePath += fileName ;
if (File.Exists(HttpContext.Current.Server.MapPath(deletePath)))
{
// deletevprevious image
File.Delete(HttpContext.Current.Server.MapPath(deletePath));
}
}
簡単な答えは、できないということです-自分のマシン上のファイルをASP Webサイトからチェックすることはできません。そうすることは彼らにとって危険なリスクです。
それらにファイルのアップロード制御を与える必要があります-そして、その制御でできることはあまりありません。セキュリティ上の理由から、javascriptは実際にはそれに触れることができません。
<asp:FileUpload ID="FileUpload1" runat="server" />
次に、アップロードするファイルを選択します。サーバー側に送信される可能性のある空のファイルを処理する必要があります。
まだコメントできませんが、 erikkallen に同意しない/明確にしたかっただけです。
説明した状況で例外をキャッチするだけではいけません。ファイルがそこにあるはずで、何らかのexceptionalのケースのために知っていた場合、そうではなかったので、単にアクセスしようとするのは許容できるでしょうファイルし、発生した例外をキャッチします。
ただし、この場合、ユーザーからの入力を受け取り、ファイルが存在すると信じる理由はほとんどありません。ここでは、常にFile.Exists()を使用する必要があります。
私はそれが決まり文句であることを知っていますが、例外は例外的なイベントに対してのみ使用し、アプリケーションの通常のフローの一部として使用するべきではありません。高価であり、コードの読み取り/追跡がより困難になります。
次を使用できます。
System.IO.File.Exists(@"c:\temp\test.txt");
File.Exists()
を使用することに加えて、ファイルを使用して、スローされた例外をキャッチすることをお勧めします。ファイルは、存在しない以外の理由で開くことができない場合があります。
これらの回答はすべて、チェックするファイルがサーバー側にあることを前提としています。残念ながら、クライアント側にファイルが存在することを保証する鋳鉄の方法はありません(たとえば、履歴書をアップロードする場合)。確かに、Javascriptでそれを行うことはできますが、サーバー側で100%確信することはまだできません。
私の意見では、これを処理する最善の方法は、ユーザーが実際にアップロードに適したファイルを選択すると仮定し、アップロードされたファイルが期待どおりであることを確認するために必要な作業を行うことです(ヒント-ユーザーを想定彼/彼女の入力でシステムをあらゆる方法で中毒しようとしています)
Asp.netを作成しました-ファイルをアップロードしようとしていますか?
HTMLを使用できる場合
<input type = "file" ...
私はこのコードをvbで記述しましたが、ファイルが存在するかどうかを確認するために正常に機能しています。それを試してみてください
FOR VB CODE ============
If FileUpload1.HasFile = True Then
Dim FileExtension As String = System.IO.Path.GetExtension(FileUpload1.FileName)
If FileExtension.ToLower <> ".jpg" Then
lblMessage.ForeColor = System.Drawing.Color.Red
lblMessage.Text = "Please select .jpg image file to upload"
Else
Dim FileSize As Integer = FileUpload1.PostedFile.ContentLength
If FileSize > 1048576 Then
lblMessage.ForeColor = System.Drawing.Color.Red
lblMessage.Text = "File size (1MB) exceeded"
Else
Dim FileName As String = System.IO.Path.GetFileName(FileUpload1.FileName)
Dim ServerFileName As String = Server.MapPath("~/Images/Folder1/" + FileName)
If System.IO.File.Exists(ServerFileName) = False Then
FileUpload1.SaveAs(Server.MapPath("~/Images/Folder1/") + FileUpload1.FileName)
lblMessage.ForeColor = System.Drawing.Color.Green
lblMessage.Text = "File : " + FileUpload1.FileName + " uploaded successfully"
Else
lblMessage.ForeColor = System.Drawing.Color.Red
lblMessage.Text = "File : " + FileName.ToString() + " already exsist"
End If
End If
End If
Else
lblMessage.ForeColor = System.Drawing.Color.Red
lblMessage.Text = "Please select a file to upload"
End If
C#コードの場合======================
if (FileUpload1.HasFile == true) {
string FileExtension = System.IO.Path.GetExtension(FileUpload1.FileName);
if (FileExtension.ToLower != ".jpg") {
lblMessage.ForeColor = System.Drawing.Color.Red;
lblMessage.Text = "Please select .jpg image file to upload";
} else {
int FileSize = FileUpload1.PostedFile.ContentLength;
if (FileSize > 1048576) {
lblMessage.ForeColor = System.Drawing.Color.Red;
lblMessage.Text = "File size (1MB) exceeded";
} else {
string FileName = System.IO.Path.GetFileName(FileUpload1.FileName);
string ServerFileName = Server.MapPath("~/Images/Folder1/" + FileName);
if (System.IO.File.Exists(ServerFileName) == false) {
FileUpload1.SaveAs(Server.MapPath("~/Images/Folder1/") + FileUpload1.FileName);
lblMessage.ForeColor = System.Drawing.Color.Green;
lblMessage.Text = "File : " + FileUpload1.FileName + " uploaded successfully";
} else {
lblMessage.ForeColor = System.Drawing.Color.Red;
lblMessage.Text = "File : " + FileName.ToString() + " already exsist";
}
}
}
} else {
lblMessage.ForeColor = System.Drawing.Color.Red;
lblMessage.Text = "Please select a file to upload";
}
これはあなたを助けるかもしれません。
try
{
con.Open();
if ((fileUpload1.PostedFile != null) && (fileUpload1.PostedFile.ContentLength > 0))
{
filename = System.IO.Path.GetFileName(fileUpload1.PostedFile.FileName);
ext = System.IO.Path.GetExtension(filename).ToLower();
string str=@"/Resumes/" + filename;
saveloc = (Server.MapPath(".") + str);
string[] exts = { ".doc", ".docx", ".pdf", ".rtf" };
for (int i = 0; i < exts.Length; i++)
{
if (ext == exts[i])
fileok = true;
}
if (fileok)
{
if (File.Exists(saveloc))
throw new Exception(Label1.Text="File exists!!!");
fileUpload1.PostedFile.SaveAs(saveloc);
cmd = new SqlCommand("insert into candidate values('" + candidatename + "','" + candidatemail + "','" + candidatemobile + "','" + filename + "','" + str + "')", con);
cmd.ExecuteNonQuery();
Label1.Text = "Upload Successful!!!";
Label1.ForeColor = System.Drawing.Color.Blue;
con.Close();
}
else
{
Label1.Text = "Upload not successful!!!";
Label1.ForeColor = System.Drawing.Color.Red;
}
}
}
catch (Exception ee) { Label1.Text = ee.Message; }