Saq*_*taf 5 javascript c# asp.net jquery c#-4.0
我将使用asp.net文件上传控件上传多个图像.对于这个解决方案有很多建议.目前正在使用DataTable.所有图像放入DataTable视图状态,然后检查其行..我标记检查FileName,如果已经存在,那么它将不会上传..但如果任何用户浏览/上传具有相同名称但来自不同文件夹/路径的图像将成为一个问题.我的代码在这里
private void AttachImage()
{
string fileName = Convert.ToString(Guid.NewGuid());
string filePath = "images/" + fileName;
fileName = Path.GetFileName(ImageUpload.PostedFile.FileName);
ImageUpload.SaveAs(Server.MapPath(filePath));
DataTable dt = new DataTable();
DataColumn dc = new DataColumn();
dc = new DataColumn("Name", typeof(String));
dt.Columns.Add(dc);
dc = new DataColumn("Path", typeof(String));
dt.Columns.Add(dc);
dt.Rows.Add(fileName, filePath);
if (ViewState["dt"] == null)
{
ViewState["dt"] = dt;
}
else// (ViewState["dt"] != null)
{
DataTable tmpTable = (DataTable)ViewState["dt"];
tmpTable.Rows.Add(fileName, filePath);
ViewState["dt"] = tmpTable;
}
lstProductsImage.DataSource = (DataTable)ViewState["dt"];
lstProductsImage.DataBind();
}
Run Code Online (Sandbox Code Playgroud)
其次:使用GUID来分配图像.但它也不合适,因为它只会更改FileName,我们无法确定服务器上是否存在此文件.第三个选项可以是,如果文件已存在于上传文件夹中,我们会询问用户是否要覆盖现有文件.或者我应该使用System.IO.File.Exists(pathToCheck))??
我希望你身边有好的建议......谢谢:Saquib
老兄!我审查了您的代码,并从我的角度来看... 1-在这种情况下不要使用 GUID。2-使用以下代码获取文件名(根据您的要求更改)
string fileName = System.IO.Path.GetFileName(dsPhotosFiles.Tables[0].Rows[i]["filePath"].ToString());
Run Code Online (Sandbox Code Playgroud)
3- 使用数组获取图像字节(例如 byte[] imageBytes;)
byte[] imageBytes;
imageBytes = (byte[])dsPhotosFiles.Tables[0].Rows[i]["fileBytes"];
Run Code Online (Sandbox Code Playgroud)
或 将文件读入数据流 AND && 使用((System.IO.File.Exists(Server.MapPath(SavePath + Filename))) ) + ImageBytes 检查 FileName + FilePath
byte[] myData = new Byte[nFileLen];
4-之后打开它检查文件是否真的是JPEG(可以从以下代码中获得一些帮助..
System.Drawing.Image.GetThumbnailImageAbort myCallBack =
new System.Drawing.Image.GetThumbnailImageAbort(ThumbnailCallback);
Bitmap myBitmap;
try
{
myBitmap = new Bitmap(Server.MapPath(sSavePath + sFilename));
// If jpg file is a jpeg, create a thumbnail filename that is unique.
file_append = 0;
string sThumbFile = System.IO.Path.GetFileNameWithoutExtension(myFile.FileName)
+ sThumbExtension + ".jpg";
while (System.IO.File.Exists(Server.MapPath(sSavePath + sThumbFile)))
{
file_append++;
sThumbFile = System.IO.Path.GetFileNameWithoutExtension(myFile.FileName) +
file_append.ToString() + sThumbExtension + ".jpg";
}
// Save thumbnail and output it onto the webpage
System.Drawing.Image myThumbnail
= myBitmap.GetThumbnailImage(intThumbWidth,
intThumbHeight, myCallBack, IntPtr.Zero);
myThumbnail.Save (Server.MapPath(sSavePath + sThumbFile));
imgPicture.ImageUrl = sSavePath + sThumbFile;
// Displaying success information
lblOutput.Text = "File uploaded successfully!";
// Destroy objects
myThumbnail.Dispose();
myBitmap.Dispose();
}
catch (ArgumentException errArgument)
{
// The file wasn't a valid jpg file
lblOutput.Text = "The file wasn't a valid jpg file.";
System.IO.File.Delete(Server.MapPath(sSavePath + sFilename));
}
Run Code Online (Sandbox Code Playgroud)
希望这对您有帮助...问候:Azeem Raavi
| 归档时间: |
|
| 查看次数: |
1800 次 |
| 最近记录: |