c# 本地图片 上传到另一个服务器
在网上查查上传的代码。介绍jmail的上传附件的就有 下面的是按钮点击方法
html:
<asp:FileUpload ID="fufujian" runat="server" style ="border-left-style:none;border-right-style:none;border-top-style:none; " />
<asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Button" />
cs文件
按钮点击
if (fufujianHasFile)
{
//指定上传文件在服务器上的保存路径
string savePath = ServerMapPath("~/upload/");
//检查服务器上是否存在这个物理路径,如果不存在则创建
if (!SystemIODirectoryExists(savePath))
{
//需要注意的是,需要对这个物理路径有足够的权限,否则会报错
//另外,这个路径应该是在网站之下,而将网站部署在C盘却把上传文件保存在D盘
SystemIODirectoryCreateDirectory(savePath);
}
savePath = savePath + "\\" + fufujianFileName;
fufujianSaveAs(savePath);//保存文件
//不过需要注意的是,在客户端访问却需要指定的是URL地址,而不是在服务器上的物理地址
// ResponseWrite(savePath);
// ResponseEnd();
//ResponseWrite(stringFormat("<a href='upload/{0}'>upload/{0}</a>", fufujianFileName));
//ResponseEnd();
using System;
using SystemIO;
using SystemWebUIHtmlControls;
namespace JH_ProfessionCMSCommon
{
/// <summary>
/// 功能 : 上传文件操作类
/// 作者 : xtx
/// </summary>
public class UpFile
{
public UpFile()
{
}
#region 是否允许该扩展名上传 IsAllowedExtension
/// <summary>
/// 是否允许该扩展名上传
/// </summary>
/// <paramname = "hifile">HtmlInputFile 控件 </param>
/// <returns> 允许则返回 true, 否则返回 false </returns>
public bool IsAllowedExtension(HtmlInputFile hifile)
{
string strOldFilePath = "";
string strExtension = "";
// 允许上传的扩展名,可以改成从配置文件中读出
string[]arrExtension = {"gif","jpg","jpeg","bmp","png"};
if(hifilePostedFileFileName != stringEmpty)
{
strOldFilePath = hifilePostedFileFileName;
// 取得上传文件的扩展名
strExtension = strOldFilePathSubstring(strOldFilePathLastIndexOf(""));
// 判断该扩展名是否合法
for(int i = 0;i <arrExtensionLength;i++)
{
if(strExtensionEquals(arrExtension[i]))
{
return true;
}
}
}
return false;
}
#endregion
#region 判断上传文件大小是否超过最大值 IsAllowedLength
/// <summary>
/// 判断上传文件大小是否超过最大值
/// </summary>
/// <param name="hifile">HtmlInputFile 控件 </param>
/// <returns> 超过最大值返回 false, 否则返回 true </returns>
public bool IsAllowedLength(HtmlInputFile hifile)
{
// 允许上传文件大小的最大值 , 可以保存在 xml 文件中 , 单位为 KB
int i = 20;
// 如果上传文件的大小超过最大值 , 返回 flase, 否则返回 true
if(hifilePostedFileContentLength > i 1024)
{
return false;
}
return true;
}
#endregion
#region 获取一个不重复的文件名 GetUniqueString
/// <summary>
/// 获取一个不重复的文件名
/// </summary>
/// <returns> </returns>
public string GetUniqueString()
{
// 得到的文件名形如 :20050922101010
return DateTimeNowToString("yyyyMMddhhmmss");
}
#endregion
#region 删除指定文件 DeleteFile
/// <summary>
/// 删除指定文件
/// </summary>
/// <param name="strAbsolutePath"> 文件绝对路径 </param>
/// <param name="strFileName"> 文件名 </param>
public void DeleteFile(string strAbsolutePath, string strFileName)
{
// 判断路径最后有没有 \ 符号,没有则自动加上
if(strAbsolutePathLastIndexOf("\\") == strAbsolutePathLength)
{
// 判断要删除的文件是否存在
if(FileExists(strAbsolutePath + strFileName))
{
// 删除文件
FileDelete(strAbsolutePath + strFileName);
}
}
else
{
if(FileExists(strAbsolutePath + "\\" + strFileName))
{
FileDelete(strAbsolutePath + "\\" + strFileName);
}
}
}
#endregion
#region 上传文件并返回文件名 SaveFile
/// <summary>
/// 上传文件并返回文件名
/// </summary>
/// <param name="hifile">HtmlInputFile 控件 </param>
/// <param name="strAbsolutePath"> 绝对路径 如 :ServerMapPath(@"Image/upload") 与 ServerMapPath(@"Image/upload/") 均可 , 用 \ 符号亦可 </param>
/// <returns> 返回的文件名即上传后的文件名 </returns>
public string SaveFile(HtmlInputFile hifile,string strAbsolutePath)
{
string strOldFilePath = "",strExtension = "",strNewFileName = "";
// 如果上传文件的文件名不为空
if(hifilePostedFileFileName != stringEmpty)
{
strOldFilePath = hifilePostedFileFileName;
// 取得上传文件的扩展名
strExtension = strOldFilePathSubstring(strOldFilePathLastIndexOf(""));
// 文件上传后的命名
strNewFileName = GetUniqueString() + strExtension;
// 如果路径末尾为 \ 符号,则直接上传文件
if(strAbsolutePathLastIndexOf("\\") == strAbsolutePathLength)
{
hifilePostedFileSaveAs(strAbsolutePath + strNewFileName);
}
else
{
hifilePostedFileSaveAs(strAbsolutePath + "\\" + strNewFileName);
}
}
return strNewFileName;
}
#endregion
#region 重新上传文件,删除原有文件 CoverFile
/// <summary>
/// 重新上传文件,删除原有文件
/// </summary>
/// <param name="ffFile">HtmlInputFile 控件 </param>
/// <param name="strAbsolutePath"> 绝对路径 如 :ServerMapPath(@"Image/upload") 与 ServerMapPath(@"Image/upload/") 均可 , 用 \ 符号亦可 </param>
/// <param name="strOldFileName"> 旧文件名 </param>
public string CoverFile(HtmlInputFile ffFile,string strAbsolutePath,string strOldFileName)
{
// 获得新文件名
string strNewFileName = GetUniqueString();
if(ffFilePostedFileFileName != stringEmpty)
{
// 旧不为空时先删除旧
if(strOldFileName != stringEmpty)
{
DeleteFile(strAbsolutePath,strOldFileName);
}
return SaveFile(ffFile,strAbsolutePath);
}
return "";
}
#endregion
}
}
至于保存嘛,简单了,上面已经有取得路径的代码。你把数据库操作加进去就行了。
用FileUpload控件 做个死循环一直赋值上传,这样行么?
下面是fileupload上传代码
if (UploadImgPostedFileFileName != "")
{
string ImgPath = UploadImgPostedFileFileName;
ImgName = ImgPathSubstring(ImgPathLastIndexOf("\\") + 1);
string ImgExtend = ImgPathSubstring(ImgPathLastIndexOf("") + 1);
if (!(ImgExtend == "bmp" || ImgExtend == "jpg" || ImgExtend == "gif"))
{
Label1Visible = true;
ImgName = "noImagegif";
return;
}
Photo = ServerMapPath("~/Images/") + ImgName;
UploadImgPostedFileSaveAs(Photo);
}
//这是一个上传的例子,上传其他文件都一样
string strFileFullName = SystemIOPathGetFileName(thisFileUpload1PostedFileFileName);
if (strFileFullNameLength > 0)
{
if (FileUpload1HasFile)
{
string newFileName = GetNewFileName(strFileFullName);
string path = ServerMapPath("[服务器端存储的路径]" + newFileName);
string pathSaveImg = ServerMapPath("[服务器端存储的路径]" + newFileName);
thisFileUpload1SaveAs(path);
[数据库字段]= "[服务器端存储的路径]" + newFileName;
}
else
{
MessageBoxShow(this, "找不到此"); return;
}
}
//跟据文件名产生一个由时间+随机数组成的一个新的文件名
//因为客户端上传的文件很可能会重名,所以要对文件名进行重命名
public static string GetNewFileName(string FileName)
{
Random rand = new Random();
string newfilename = DateTimeNowYearToString() + DateTimeNowMonthToString() + "m" +
DateTimeNowDayToString() + "d"
+ DateTimeNowSecondToString() + DateTimeNowMinuteToString()
+ DateTimeNowMillisecondToString()
+ "a" + randNext(1000)ToString()
+ FileNameSubstring(FileNameLastIndexOf(""), FileNameLength - FileNameLastIndexOf(""));
return newfilename;
}
0条评论