首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >文件上载到服务器中的文件夹

问文件上载到服务器中的文件夹
EN

Stack Overflow用户
提问于 2013-04-13 12:58:14
回答 1查看 2.3K关注 0票数 0

我只想把上传的文件保存到服务器的文件夹中。我的系统设计有UI和服务器part.The,UI是完全HTML的,服务器端是ASP.net。数据传输是通过json代码。

假设我在UI中有一个HTML文件控件,那么如何将它上传到服务器。

有人能给我举个例子吗?

代码样本

代码语言:javascript
复制
 $("#btn_AddDoc").click( function (e) {
          e.preventDefault();
          var InsDocDet = {};
          InsDocDet.docname=$("#DocName").val();

          InsDocDet.ownerUser=1;
          InsDocDet.catid=$("#drp_cat").val();
          InsDocDet.createDatetime=new Date();
          InsDocDet.description_d=$("#Desc").val();
          InsDocDet.comments_=$("#cmnts").val();
          InsDocDet.deptid_=1;
          InsDocDet.con_type=1;
          InsDocDet.size_=1;
          InsDocDet.Doc_status="up";
          var fullPath =$("#doc_upload").val(); //document.getElementById('doc_upload').value;
          if (fullPath) {
          var startIndex = (fullPath.indexOf('\\') >= 0 ? fullPath.lastIndexOf('\\') : fullPath.lastIndexOf('/'));
          var filename = fullPath.substring(startIndex);
          if (filename.indexOf('\\') === 0 || filename.indexOf('/') === 0) {
          filename = filename.substring(1);
          InsDocDet.file_name=filename;
          $.ajax({
              type: "POST",
            // <!-- url: "http://localhost/EMRDMSService/Service.asmx/User_Login",-->
             url: "http://localhost/EMRDMSService/Service.asmx/srv_Insert_Document",
              data: "{ins_Doc:" + JSON.stringify(InsDocDet) + "}",
              contentType: "application/json; charset=utf-8",
              dataType: "json",
              success: function (r) {                     
                              console.log(r.d.STAT);
              }
          });
      });

在web服务中

代码语言:javascript
复制
public string srv_Insert_Document(insert_doc_details ins_Doc)
{
    InsDoc_Ret doc_ret = new InsDoc_Ret();
    try
    {

        string filename = Path.GetFileName(ins_Doc.file_name);
        string path = Server.MapPath("~/");
        File_Doc.SaveAs(Server.MapPath(Path.Combine("~/Files/" + dept_name + "/", filename)));
        string ctype = File_Doc.PostedFile.ContentType;
        int len = File_Doc.PostedFile.ContentLength;
        double size = len / 1024;
        string sizkb = Convert.ToString(size) + " KB";
        string fname = dept_name + "/" + filename;






        int doc_id = newdb_class.Insert_Data_Scaler("INSERT INTO dms_document_details (DOC_NAME,FILE_NAME,OWNER_USER,CAT_ID,CREATE_DATE,DESCRIPTION,COMMENTS,DEPT_ID,contype,Size,DocStatus) VALUES ('" + ins_Doc.docname + "','" + ins_Doc.file_name + "','" + ins_Doc.ownerUser + "','" + ins_Doc.catid + "',NOW(),'" + ins_Doc.description_d + "','" + ins_Doc.comments_ + "','" + ins_Doc.deptid_ + "','" + ins_Doc.con_type + "','" + ins_Doc.size_ + "','" + ins_Doc.Doc_status + "')");
        doc_ret.SID = "1";
        doc_ret.STAT="SUCCESS";

    }
    catch (Exception ex)
    {
        doc_ret.SID = "1";
        doc_ret.STAT = "FAIL";
    }
    JavaScriptSerializer js = new JavaScriptSerializer();
    string strJSON = js.Serialize(doc_ret);
    return strJSON;

}

在这段代码中,服务中的"File_Doc“指的是asp.net中的文件上传控件。那么如何用html文件控件来代替它呢?

我有一些密码

代码语言:javascript
复制
 public string srv_Insert_Document(insert_doc_details ins_Doc)
{
    InsDoc_Ret doc_ret = new InsDoc_Ret();
    try
    {
        DataTable dt = new DataTable();
        dt = newdb_class.Read_Data("SELECT Dept_Name FROM dms_dept_details WHERE Dept_id='" + ins_Doc.deptid_ + "'");
        string dept_name = dt.Rows[0][0].ToString().Trim();
        string filename = Path.GetFileName(ins_Doc.file_name);
        string path = Server.MapPath("~/");
        HttpPostedFile file = Request.Files["myFile"];
        if (file != null && file.ContentLength > 0)
        {
            string fname = Path.GetFileName(file.FileName);
            file.SaveAs(Server.MapPath(Path.Combine("~/Files/" + dept_name + "/", filename)));
        }

        string ctype = file.ContentType;
        int len = file.ContentLength;
        double size = len / 1024;
        string sizkb = Convert.ToString(size) + " KB";


        string fname_ins = dept_name + "/" + filename;






        int doc_id = newdb_class.Insert_Data_Scaler("INSERT INTO dms_document_details (DOC_NAME,FILE_NAME,OWNER_USER,CAT_ID,CREATE_DATE,DESCRIPTION,COMMENTS,DEPT_ID,contype,Size,DocStatus) VALUES ('" + ins_Doc.docname + "','" + ins_Doc.file_name + "','" + ins_Doc.ownerUser + "','" + ins_Doc.catid + "',NOW(),'" + ins_Doc.description_d + "','" + ins_Doc.comments_ + "','" + ins_Doc.deptid_ + "','" + ins_Doc.con_type + "','" + ins_Doc.size_ + "','" + ins_Doc.Doc_status + "')");
        doc_ret.SID = "1";
        doc_ret.STAT="SUCCESS";

    }
    catch (Exception ex)
    {
        doc_ret.SID = "1";
        doc_ret.STAT = "FAIL";
    }
    JavaScriptSerializer js = new JavaScriptSerializer();
    string strJSON = js.Serialize(doc_ret);
    return strJSON;

}

但我在HttpPostedFile file = Request.Files["myFile"];中有个错误

在当前上下文中不存在ie请求。

EN

回答 1

Stack Overflow用户

发布于 2013-04-13 13:12:31

不是的。上传文件需要一个完整的回发。

您可以模拟ajax调用发送到隐藏的iFrame (这样您的页面就不会改变)。然后使用jquery/javascript检查iFrame的内容,查看上传是否成功,并对屏幕的某些部分进行刷新。

如果您正在使用ASP.NET MVC3或MVC4,下面是一个示例:http://www.dustinhorne.com/post/2011/11/16/AJAX-File-Uploads-with-jQuery-and-MVC-3.aspx

如果您想要在JS中使用更通用的方法:http://tips.itliveweb.com/ajax/upload-image-using-iframe-javascript-ajax.html

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15988047

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档