Я работаю над приложением. Это приложение должно получить резюме от пользователей, так что мне нужен код для проверки наличия файла или нет.
Я использую ASP.NET/С#.
Я работаю над приложением. Это приложение должно получить резюме от пользователей, так что мне нужен код для проверки наличия файла или нет.
Я использую ASP.NET/С#.
Вы можете определить, существует ли указанный файл с помощью метода Exists
класса File
в пространстве имен System.IO
:
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>
}
Я сделал что-то вроде этого, чтобы проверить, существует ли изображение перед его отображением.
Простой ответ заключается в том, что вы не можете - вы не сможете проверить файл на своей машине с веб-сайта ASP, так как это опасно для них.
Вы должны дать им контроль над загрузкой файлов - и с этим элементом управления вы не сможете многое сделать. По соображениям безопасности javascript не может потрогать его.
<asp:FileUpload ID="FileUpload1" runat="server" />
Затем они выбирают файл для загрузки, и вам приходится иметь дело с любым пустым файлом, который они могли бы отправить на сервер.
Вы можете использовать:
System.IO.File.Exists(@"c:\temp\test.txt");
Не могу комментировать, но я просто хотел не согласиться/уточнить с помощью erikkallen.
Вы не должны просто улавливать исключение в описанной ситуации. Если вы знаете, что файл должен быть там и из-за какого-то исключительного случая, это не так, тогда было бы приемлемо просто попытаться получить доступ к файлу и поймать любое исключение.
В этом случае, однако, вы получаете вход от пользователя и не имеете оснований полагать, что файл существует. Здесь вы всегда должны использовать File.Exists().
Я знаю, что это клише, но вы должны использовать Исключения только для исключительного события, а не как часть обычного потока вашего приложения. Это дорого и делает код более трудным для чтения/наблюдения.
В дополнение к использованию File.Exists()
вам может быть лучше просто попытаться использовать файл и поймать любое исключение, которое будет выбрано. Файл может не открыться из-за других вещей, кроме существующих.
Эти ответы все предполагают, что файл, который вы проверяете, находится на стороне сервера. К сожалению, нет никакого чугунного способа гарантировать, что файл существует на стороне клиента (например, если вы загружаете резюме). Конечно, вы можете сделать это в Javascript, но вы по-прежнему не будете на 100% уверенны на стороне сервера.
Лучший способ справиться с этим, на мой взгляд, состоит в том, чтобы предположить, что пользователь фактически выберет подходящий файл для загрузки, а затем выполнит любую работу, необходимую для обеспечения того, чтобы загруженный файл был тем, что вы ожидаете (подсказка - предположите, что пользователь пытается отравить вашу систему всеми возможными способами с помощью своего ввода)
Вы писали asp.net - вы хотите загрузить файл?
если это так, вы можете использовать html
< input type="file"...
Это может вам помочь.
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 [email protected]"/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; }
Я написал этот код в 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
КОД С# ======================
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";
}
Попробуйте следующее:
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));
}
}