类似博客园头像上传的时候,把图片保存到http://pic.cnitblog.com/avatar/下。1,是怎么实现的啊,,用WebServise或wcf来实现吗?2,图片上传时保存路径怎么设置呢?像我在http://home.cnblogs.com/set/avatar/这里上传,保存到http://pic.cnitblog.com/avatar/这个里面。这个中间的操作不是很明白。谁能解释一下啊?先谢谢了
我们网站现在有手机端,pc端,想把用户上传图片保存到另一个网站下面,这样都能实现上传和下载。不清楚怎么解决?
这个应该属于使用独立服务器来保存图片。大致上已经有了思路,具体实现还得看看。谢谢各位了。
可以用wcf或webservice实现,下面是以前写的一个代码webservice的,思路是将文件流转换成byte[]的形式在网络上传送,
接收方再将byte[]使用FileStream写入文件,注意上传文件大小有限制,所以并不完美。希望对你有帮助。
[WebMethod] public bool AddAssistSpeech(AssistSpeech assistSpeech, string fileName, byte[] fileStream, out string msg) { try { // 上传文件 assistSpeech.AudioPath = (new AssistSpeechAudioFileHelper()).Upload(fileName, fileStream); // 保存数据库等其他操作为返回结果result和输出信息msg赋值
…… return result; } catch (Exception ex) { Loger.LogErr(ex); msg = ex.Message; return false; } }
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.IO; namespace Xinbohit.Com.CommonWebService.Classes { class AssistSpeechAudioFileHelper { /// <summary> /// 上传文件,返回相对路径以便存库 /// </summary> /// <param name="fileName">源文件名</param> /// <param name="fileStream">文件数据流</param> /// <returns></returns> public string Upload(string fileName, byte[] fileStream) { DateTime now = DateTime.Now; string relativepath = Path.Combine(now.ToString("yyyyMMdd"), now.ToString("yyyyMMddhhmmssfff") + Path.GetExtension(fileName)); string basePath = GetBasePath(); string savePath = Path.Combine(basePath, relativepath); string saveDir = Path.GetDirectoryName(savePath); if (!Directory.Exists(saveDir)) { Directory.CreateDirectory(saveDir); } using (FileStream stream = new FileStream(savePath, FileMode.Create)) { stream.Write(fileStream, 0, fileStream.Length); stream.Flush(); } return relativepath; } /// <summary> /// 下载音频文件 /// </summary> /// <param name="fileNameRelativepath"></param> /// <returns></returns> public byte[] DownLoad(string fileNameRelativepath, out string msg) { string basePath = GetBasePath(); string filePath = Path.Combine(basePath, fileNameRelativepath); if (File.Exists(filePath)) { byte[] result; using (FileStream stream = new FileStream(filePath, FileMode.Open)) { long length = stream.Length; result = new byte[length]; long bytesToRead = length; int buffer = 1024; int offset = 0; int byteNum = 0; while (bytesToRead > 0) { if (buffer < bytesToRead) { byteNum = stream.Read(result, offset, buffer); } else { byteNum = stream.Read(result, offset, (int)bytesToRead); } if (byteNum == 0) { break; } offset += byteNum; bytesToRead -= byteNum; } } msg = string.Empty; return result; } else { msg = "文件不存在。"; return new byte[0]; } } private string GetBasePath() { string basePath = System.Configuration.ConfigurationManager.AppSettings["AudioFileBasePath"]; if (!Directory.Exists(basePath)) { Directory.CreateDirectory(basePath); } return basePath; } } }
1.上传的图片的代码就不写了。自己百度一下就有了。2.应该是可以直接利用WebServise。先判断http://pic.cnitblog.com/avatar/是否已存在这样的图片,没有就上传。
上传到一个服务器的文件夹下,然后在数据库里记录下来再告诉别人路径不就OK了?前台的url请求地址不代表后台的存储方式吧
想把用户上传图片保存到另一个网站下面,这个完全不用保存到另一个网站啊,保存到当前网站下面,用户在另一个网站访问图片时路径就是 当前网站域名+图片路径
这个已经解决了,就是添加一个图片服务器。还是谢谢了