c#客户端图片上传到服务器端文件并且把路径保存到SQL数据库
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;
}
上传到服务器上会比较好,数据库可以记录一些必要的信息,比如文件的名称,类型(扩展名),大小,创建时间及谁的文件等等;如果把文件放入数据库,读写性能不如文件系统,还会加大数据库的压力。放到服务器上注意要设计好一个文件结构,不然以后一个文件夹里有成千上万个文件,打开那个文件夹就要好久,更不用说查找和下载了。
出现该问题,主要是因为tomcat版本高的原因。我使用tomcat 8024,便没有此问题,当我使用tomcat 85+ 时,就会出现该问题,需要修改我下面书写的配置,才能生效!
一、检查linux
linux文件访问默认权限与umask有关,查看系统默认配置(/etc/profile)是否正常,如果是002或022就正常没有问题。
[umask 002 对应文件权限664,文件夹权限775;
umask 022对应文件权限644,文件夹权限755]
二、检查tomcat
打开bin/catalinash文件,检查大概在263行左右。
将0027改改为0022,重启tomcat,上传访问的问题解决。
原代码
# Set UMASK unless it has been overriddenif [ -z "$UMASK" ]; then
UMASK="0027"fi
改为
# Set UMASK unless it has been overriddenif [ -z "$UMASK" ]; then
UMASK="0022"fi
三、重启tomcat
sh shutdownsh(关闭)
sh startupsh 或者 /startupsh(启动)
我做了个例子给你\x0d\前台:\x0d\\x0d\ \x0d\ \x0d\ \x0d\ \x0d\后台:\x0d\ protected void Button1_Click(object sender, EventArgs e)\x0d\ {\x0d\ FileUpload1SaveAs(ServerMapPath("img/"+FileUpload1FileName));//上传\x0d\ Image1ImageUrl = "~/img/" + FileUpload1FileName;//路径(将这个数据保存到数据库就可以了。img为项目里一个文件夹的名称)\x0d\ }
用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);
}
用smartupload 控件来完成 你百度下一大堆的例子,算了我帮你百度,不然你分不给我,要记的给我呀,至于保存在数据库中,你可以用年月日时分秒这样的格式生成一个文件存放目录,将的路径保存到数据库中
<%@ page language="java" contentType="text/html; charset=GB2312" pageEncoding="GB2312"%>
<%@ page language="java" import="javaio"%>
<%@ page language="java" import="comjspsmartupload"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 401 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB2312">
<title>文件上传Bean</title>
</head>
<body>
<jsp:useBean id="mySmartUpload" scope="page" class="comjspsmartuploadSmartUpload" />
<FORM METHOD="POST" ACTION="Ex7_7jsp" ENCTYPE="multipart/form-data">
<INPUT TYPE="FILE" NAME="FILE1" SIZE="50"><BR>
<INPUT TYPE="FILE" NAME="FILE2" SIZE="50"><BR>
<INPUT TYPE="FILE" NAME="FILE3" SIZE="50"><BR>
<INPUT TYPE="FILE" NAME="FILE4" SIZE="50"><BR>
<INPUT TYPE="SUBMIT" VALUE="Upload">
</FORM>
<%
//上传文件计数
int count=0;
//初始化,传入pageContext内置变量
mySmartUploadinitialize(pageContext);
//允许上传的文件类型
mySmartUploadsetAllowedFilesList("htm,html,txt,jar,");
//或者设定拒绝上传的文件类型
// mySmartUploadsetDeniedFilesList("exe,bat,jsp");
// 拒绝的物理路径
// mySmartUploadsetDenyPhysicalPath(true);
// 设置文件最大为 50000 bytes
mySmartUploadsetMaxFileSize(50000);
// 允许一次最多上载文件大小不超过 200000 bytes
// mySmartUploadsetTotalMaxFileSize(200000);
try {
// 上传操作
mySmartUploadupload();
//以原文件名存储在web服务器虚拟路径下
//返回上传的文件数
count = mySmartUploadsave("/Upload", mySmartUploadSAVE_VIRTUAL);
} catch (Exception e){
//输出意外信息
outprintln("<b>Wrong selection : </b>" + etoString());
}
// 显示文件上载数
outprintln(count + " file(s) uploaded");
%>
</body>
</html>
0条评论