webservice上传图片问题(高手进)

liubeiru_1982 2009-01-21 05:13:13
问题是这样的 我调用webservice上传图片 给webservice传递的是byte[]字节 , 如果连续5张 200k 的都能上传成功, 单张600k的也行 ,如果连续2张600k的 就一张也上不去 webservice那没什么反映了。 我用httpwatch工具查看了一下,是因为上传的响应时间只要超过30秒就会提示错误 "在与服务器的连接已被终止",30秒内的都可以成功.
我在webservice,服务端都配置了<httpRuntime maxRequestLength="100000" executionTimeout="360000" />,
在代理类里也重写了
//在 WebService 的客户端代理程序(用 wsdl.exe 生成)里设置 Request 超时时间, 单位是毫秒:
protected override WebRequest GetWebRequest(Uri uri)
{
HttpWebRequest wr = (HttpWebRequest)base.GetWebRequest( uri );
wr.Timeout = 3600*1000;
return wr;
}
在实例化webservice时也增加了 (部分代码)
string FilePath = inputFile.PostedFile.FileName;
int fileSize = inputFile.PostedFile.ContentLength;
string FileName = FilePath.Substring(FilePath.LastIndexOf("\\") + 1);
byte[] fileByte= new byte[fileSize];
inputFile.PostedFile.InputStream.Read(fileByte, 0, fileSize);
_imageService.Timeout = 150000;//增加了超时时间
return _imageService.UserPhoto(fileByte, FileName, UserID);

IIS也配置了对应的响应时间,实在是找不到解决的办法了。 请高手给指点一下思路谢谢拉.
我也考虑过webservice多线程传递byte[],但还是想先知道是不是还有什么配置我没做. 麻烦各位了
...全文
3045 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
ColaCoding 2012-05-30
  • 打赏
  • 举报
回复
Android上传图片,Mark....
kongluhua 2010-07-20
  • 打赏
  • 举报
回复
mark
24K純帥 2009-10-09
  • 打赏
  • 举报
回复
mark
swandragon 2009-10-08
  • 打赏
  • 举报
回复
mark
webmethodstoby 2009-10-02
  • 打赏
  • 举报
回复
我这里有webMethods资料,要不要作参考? 请电邮我:webmethods@126.com
mygisforum 2009-09-29
  • 打赏
  • 举报
回复
mark
mark620 2009-09-17
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 hui717 的回复:]
C# code///<summary>/// 上传图片///</summary>///<param name="caseid">案件号</param>///<param name="twoid">车编号、人编号</param>///<param name="pic">压缩后二进制格式的图片</param>///<param name="picmemo">图片备注</param>///<param ¡­
[/Quote]\

这个应该可以了。
kaishiyouxi 2009-09-17
  • 打赏
  • 举报
回复
进来 学习
souperstar 2009-09-17
  • 打赏
  • 举报
回复
图片的存放设定一定的规则,包括命名规则,然后使用webservice显示下载链接,这个方案应该是可以的,因为我们就是这样用的~~
Teng_s2000 2009-02-13
  • 打赏
  • 举报
回复
mark
flyingfz 2009-02-12
  • 打赏
  • 举报
回复
mark
hui717 2009-02-12
  • 打赏
  • 举报
回复

/// <summary>
/// 上传图片
/// </summary>
/// <param name="caseid">案件号</param>
/// <param name="twoid">车编号、人编号</param>
/// <param name="pic">压缩后二进制格式的图片</param>
/// <param name="picmemo">图片备注</param>
/// <param name="tablename">存储在数据库中的表名</param>
/// <param name="filedname">单证类型</param>
/// <param name="exifTime">EXIF信息</param>
/// <returns></returns>
public string CaseUpLoadImage(string caseid, int twoid, byte[] pic,
string picmemo, string tablename, string filedname,
string exifTime)
{
try
{
MyFrame.Base.CompressionHelper ch = new CompressionHelper();
byte[] images = ch.DecompressToBytes(pic); //解压
MemoryStream ms = new MemoryStream(images);
Bitmap img = new Bitmap(ms);

string picTmpFilesPath = DateTime.Now.Year.ToString() + DateTime.Now.Month.ToString() + DateTime.Now.Day.ToString();

string picTmpFiles = picTmpFilesPath + DateTime.Now.Hour.ToString() + DateTime.Now.Minute.ToString() + DateTime.Now.Second.ToString() + DateTime.Now.Millisecond.ToString() + ".jpg";

picTmpFilesPath = Server.MapPath("~/uploadfiles/" + picTmpFilesPath);

if (!Directory.Exists(picTmpFilesPath))
{
Directory.CreateDirectory(picTmpFilesPath);
}

picTmpFilesPath = picTmpFilesPath + @"\" + picTmpFiles;

img.Save(picTmpFilesPath);

DataOperation mydo = new DataOperation();

string strsql = "";

if (filedname != "")
{
strsql = "Insert into " + tablename + "(TWOID,CASEID,PICPATH,NOTE,ADDDATE,DZCLASS,EXIFTIME)"
+ " values (" + twoid + ",'" + caseid + "','" + picTmpFilesPath + "','" + picmemo
+ "',to_date('" + DateTime.Now.ToString() + "','yyyy-mm-dd hh24-mi-ss'),'" + filedname + "','" + exifTime + "')";
}
else
{
strsql = "Insert into " + tablename + "(TWOID,CASEID,PICPATH,NOTE,ADDDATE,EXIFTIME)"
+ " values (" + twoid + ",'" + caseid + "','" + picTmpFilesPath + "','" + picmemo
+ "',to_date('" + DateTime.Now.ToString() + "','yyyy-mm-dd hh24-mi-ss'),'" + exifTime + "')";
}
if (!mydo.SetExeSql(strsql))
{
return mydo.ErrInfo;
}

return "1";
}
catch (Exception ex)
{
return ex.Message;
}
}

private void c_OnShangChuan(object sender, EventArgs e)
{

UpLoadPic[] abc = uploadimages1.FileNames;
uploadimages1.ProgressBarMax = abc.Length;
string a = ""; string b = "";

for (int i = 0; i < abc.Length; i++)
{
a = abc[i].path;
b = abc[i].exifTime;
Bitmap bmp = new Bitmap(a);

string aa = sc.CaseUpLoadImage(caseid, TwoId,
ImageGdi(bmp), "", imagePath, DzClass,b);

if (aa != "1")
{
uploadimages1.AddSangChuanInfo(aa);
}
else
{
uploadimages1.ProgressBarStep(i+1);
uploadimages1.AddSangChuanInfo(string.Format("上传{0}图片成功!",abc[i].path));
}
Application.DoEvents();
}
uploadimages1.AddSangChuanInfo("----------------------------");
uploadimages1.AddSangChuanInfo("所有图片上传完毕!");
uploadimages1.UpLoadOver();
Application.DoEvents();

}
ojwftded 2009-02-12
  • 打赏
  • 举报
回复
还是推荐你上传一个url连接地址就可以了,如果上传字节流的话,不仅麻烦,而且服务器压力也大。
上传一个url用户可以自行去下载图片
sxmonsy 2009-01-23
  • 打赏
  • 举报
回复
照上面的方法做就行.
liubeiru_1982 2009-01-22
  • 打赏
  • 举报
回复
获取URL下载图片....客户端上传的,这样是不是更不合理,上传的图片未知,而且要对应解析
hubofly 2009-01-21
  • 打赏
  • 举报
回复
给webservice一个图片的url ,webservice获取到url以后,去下载图片,而不是你这样去传送图片,这样的话应该好一点吧?
hongqi162 2009-01-21
  • 打赏
  • 举报
回复
http://dotnet.aspx.cc/article/6381bd5f-51f3-4339-4239-1328564a1b2a/read.aspx

12,162

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 Web Services
社区管理员
  • Web Services社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧