zoukankan      html  css  js  c++  java
  • 如何:将文件从本地文件夹上载到 SharePoint 网站

    哈哈!标题和WSS3.0SDK里面一样! 不过我感觉SDK里面的代码我copy出来执行有点问题! 应该我自己的原因吧! 在看SDK之前我也做过上传文件! 现在看看之前的代码,真的是自己的觉得不好意思了.还好这次自我感觉还良好吧!:-)

    <form id="form1" runat="server">
        <div>
            <asp:FileUpload ID="FileUpload1" runat="server" /><br />
            <asp:CheckBox ID="cbOverWrite" runat="server" Text="Overwrite existing files" />
            <asp:Button ID="BtnUupload" runat="server" Text="Upload" 
                onclick="BtnUupload_Click" />            
            <asp:Label ID="lblMsg" runat="server" Text=""></asp:Label>
        </div>
        </form>
    //上传文件
        private void UploadFile()
        {
            if (!FileUpload1.HasFile)
            {
                lblMsg.Text = "请选择你要上传的文件";
                return;
            }
            string destUrl = siteUrl;
            SPWeb site = new SPSite(destUrl).OpenWeb();
            //Stream stream = FileUpload1.PostedFile.InputStream;
            //byte[] contents = new byte[stream.Length];
            byte[] contents = FileUpload1.FileBytes;
            //stream.Read(contents, 0, (int) stream.Length);
            //stream.Close();
            site.AllowUnsafeUpdates = true;
            //上传到的位置
            SPFolder folder = site.Lists["KB"].RootFolder;
            /**
             * 判断是否存在该文件
             * 1.使用GetFile()方法
             * 2.使用try catch
             * */
            bool result = site.GetFile(folder.Url + @"/" + FileUpload1.FileName).Exists;
            if (result && !cbOverWrite.Checked)
            {
                lblMsg.Text = "已经上传一个名字相同的文件!请修改名称";
            }
            else
            {
                if (cbOverWrite.Checked)
                {
                    site.GetFile(folder.Url + @"/" + FileUpload1.FileName).Delete();
                }
                //这里上传的文件都在  RootFolder 里面
                site.Files.Add(folder.Url + @"/" + FileUpload1.FileName, contents);
                //在 RootFolder 文件夹里面创建一个 MyFiles文件夹
                SPFolder subFolder = folder.SubFolders.Add(folder.Url + @"/MyFiles");
                site.Files.Add(subFolder.Url + @"/" + FileUpload1.FileName, contents);
                lblMsg.Text = "上传成功";
            }
    
            #region UseTry
            /*
            try
            {
                //因为这里如果文件不存在 ,索引找不到
                result = folder.Files[site.Lists["KB"].RootFolder.Url + @"/" + FileUpload1.FileName].Exists;
                if(result)
                {
                    lblMsg.Text = "已经上传一个名字相同的文件!请修改名称";
                }
            }
            catch (Exception)
            {
                site.Files.Add(site.Lists["KB"].RootFolder.Url + @"/" + FileUpload1.FileName, contents);
            }
            */
            #endregion
        }
    protected void BtnUupload_Click(object sender, EventArgs e)
        {
            UploadFile();
        }

    现在想想之前的代码!

    1.上传文件还要先上传到服务器的磁盘里面,因为用FileStream只能读取本地文件,我之前做的时候在本地测试通过,但是发布出去别人电脑始终不能上传文件,因为在服务器的盘里找不到客服端的文件!错误信息为:Could not find a part of the path "X\1.jpg" 因为没有调用SaveAs方法保存到服务器里面! 这个问题困惑了我很久很久!

    2.当时判断上传的文件是否存在的时候用的for循环判断Folder里面所有文件和上传的文件对比!哎…现在想想如果文件量很大很大的时候呢? 现在想想都想打自己两下!

     

    总结:

    不要为了实现功能而实现功能! 很多时候当我们接到一个任务的时候,总是想着先实现功能在说吧! 实现功能也许你很快,也许一天,一个小时! 但是你考虑过其他还有好的方法吗? 性能等方面!之前在园子里面看到过一篇文章说的很好! 不要实现了功能只花了一天时间,而后修复bug需要一周时间! 不要为了快而快! 希望我能更快的改变我的这个不好习惯! 实现某个功能的时候,多选几个方法,多想想,选一个更好的! 写出自己看的起的code!

     

    如果上面有什么错误,请大家指出… 共同学习!

  • 相关阅读:
    QAbstractItemModel使用样例与解析(Model::index使用了createIndex,它会被销毁吗?被销毁了,因为栈对象出了括号就会被销毁)
    更多的人为了追求自己真正热爱的事,甚至会在职业生涯刚开始时拒绝许多高薪工作,这样的人最终都成了真正的赢家。
    MYSQL分库分表之sharding-jdbc第四篇
    MYSQL分库分表之 Sharding-JDBC第三篇
    MySQL分库分表之Sharding-JDBC第二篇
    MySQL分库分表之Sharding-JDBC第一篇
    增加复杂度的12危险信号
    ASP.NET-Core-Web-API-Best-Practices-Guide
    聚合
    浏览器输入www.baidu.com后干啥了-web性能优化指南
  • 原文地址:https://www.cnblogs.com/Areas/p/2196463.html
Copyright © 2011-2022 走看看