刚不久实现一个利用Flex结合ASP实现多文件上传的功能,遇到了不少问题,虽说功能不大,却学习到了不少。
具体实现方法在Flex一端代码
var request:URLRequest = new URLRequest("com/esri/solutions/DotNetSetvices/UpLoadFileService.aspx"); filerefernce.upload(request);
在ASP中代码大概如下:
问题1:如何实现从Flex中调试进入ASP中?using System; using System.Data; using System.Configuration; using System.Collections; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; using System.IO; public partial class UpLoadFileService : System.Web.UI.Page { string uploadFolder = "assets\\images\\view"; protected void Page_Load(object sender, EventArgs e) { HttpFileCollection files = Request.Files; if (files.Count == 0) { Response.Write("锟斤拷锟斤拷直锟接凤拷锟绞憋拷锟侥硷拷"); Response.End(); } string path = Server.MapPath(uploadFolder);//返回与 Web 服务器上的指定虚拟路径相对应的物理文件路径。 path = path.Replace("DotNetSetvices\\", ""); HttpPostedFile file = files[0]; string savePath=""; if (file != null && file.ContentLength > 0) { string pFileName = Request.Form["fileName"]; string[] filenames= Directory.GetFiles(path);//获得指定路径下的所有文件的数组 bool IsChanged = false; foreach(string pfiles in filenames) { string pfilename=path+"\\"+pFileName; if (pfiles == pfilename) { savePath = path + "\\1" + pFileName; IsChanged = true; } } if (!IsChanged) { savePath = path + "\\" + pFileName; } file.SaveAs(savePath); } } }
利用VS打开网站,路径设置为ASP路径,将要调试的Asp“设置为起始页”,并添加断点,启动调试,获得Asp的URL地址,再将Flex中的URLRequest中路径代码修改为如下:
添加断点,启动调试,就可以进入VS中调试ASP代码。var request:URLRequest = new URLRequest("http://localhost:2625/DotNetSetvices/UpLoadFileService.aspx"); filerefernce.upload(request);
问题2:flex弹出:“filereference.upload出现Error #2038: 文件 I/O 错误。”
出现这种错误可能的原因有以下几点:
URL无效;
由于我上传了同名的文件,因此这属于URL问题吧。后来修改代码解决了问题
问题3:ASP中出现错误对路径的访问被拒绝。
对路径中的文件夹右键“安全”,为ASPNET用户添加权限即可。但右键时突然发现没有“安全”选项卡,后查阅资料发现只有磁盘格式为NTFS的才有“安全“选项卡,而我的代码所在磁盘格式为FAT32,需要将磁盘格式进行转换。
问题4:如何将磁盘格式从FAT32转为NTFS?
开始→运行→键入cmd按回车,在窗口“command prompt”下,输入命令“convert C: /FS:NTFS”按回车,重新启动电脑,即将FAT32 转换 NTSF 格式。注意:在“covert”的后面有一个空格,C是你要更改文件系统盘的卷标。