2013-04-25 21 views
5

Tôi đang sửa đổi dự án ASP.NET hiện có. Tác giả ban đầu đã cố gắng tạo một asp theo kiểu: FileUpload bằng cách thiết lập khả năng hiển thị ẩn của nó và chỉ tạo hai trình duyệt có kiểu tùy biến và lưu các nút.Sử dụng "<input type =" file ".... />" thay vì asp: FileUpload

Vì lý do bảo mật, IE không cho phép điều này. Chiến lược của tôi là thay vào đó, hãy thử sử dụng thẻ đầu vào có loại = "tệp", như this example. Vì vậy, nếu tôi thiết lập đầu vào như <input type="file" ID="inputFile" /> làm cách nào để truy cập/lưu tệp trong mã của tôi phía sau, inputFile.SaveAs("someFile.txt");? Ngoài ra (trong mã phía sau) tôi có thể làm một cái gì đó như inputFile.HasFile hoặc là có một số tương tự khác này?

Theo khuyến nghị Tôi đang cố gắng một cái gì đó như sau:

   <td> 
       Enabled: <asp:CheckBox ID="CheckBox2" runat="server" /> &nbsp;&nbsp; 
       <div id="testFileUploader">> 
        <input type="file" id="browserHidden" runat="server" /> 
        <div id="browserVisible"><input type="text" id="fileField" /></div> 
       </div> 
      </td> 
+1

Chỉ cần thêm runat = "server" vào nó. – melancia

+0

À vâng, tôi quên bao gồm điều này. Cảm ơn. Điều gì về việc truy cập nó trong đoạn mã phía sau, làm '.SaveAs()' và '.HasFile' hoạt động trên đối tượng' inputFile'? – kmarks2

+0

Bao gồm trong câu trả lời của tôi. :) – melancia

Trả lời

2

Thêm một runat = "server" cho các đối tượng. Bằng cách này nó sẽ làm việc trên CodeBehid giống như bất kỳ asp: FileUpload control.

+0

Tôi đã chỉnh sửa bài đăng gốc của mình để phản ánh thực hiện theo cách này. Nhưng bây giờ tôi không thể xây dựng bởi vì tôi nhận được lỗi tất cả mọi thứ tôi cố gắng làm 'browserHidden.HasFile' hoặc' browserHidden.SaveAs ("someFile.txt") ', vv. Thật vậy, dường như không có gì xuất hiện trong Intellisence khi tôi gõ 'browser.' dường như cho phép tôi lưu tập tin. Làm thế nào tôi có thể làm điều này trên một đối tượng đầu vào? – kmarks2

+0

Bạn có thể đăng ở đây các lỗi không? – melancia

0
if(fileUrunResim.HasFile) 
    fileUrunResim.SaveAs(MapPath("~/Images/" + fileUrunResim.FileName)); 


**if you unique filename,** 

string extension = Path.GetExtension(fileUrunResim.FileName); 

string fileName = Guid.NewGuid().ToString().Substring(0, 25) + extension ; 


if(fileUrunResim.HasFile) 
    fileUrunResim.SaveAs(MapPath("~/Images/" + filename)); 
10

Vì vậy, bạn có thể tạo một tên tập tin ngẫu nhiên cho một tải lên trong tương lai, dựa trên GUID tại CodeBehind trang ASPX:

HttpPostedFile filePosted = Request.Files["uploadFieldNameFromHTML"]; 

if (filePosted != null && filePosted.ContentLength > 0) 
{ 
    string fileNameApplication = System.IO.Path.GetFileName(filePosted.FileName); 
    string fileExtensionApplication = System.IO.Path.GetExtension(fileNameApplication); 

    // generating a random guid for a new file at server for the uploaded file 
    string newFile = Guid.NewGuid().ToString() + fileExtensionApplication; 
    // getting a valid server path to save 
    string filePath = System.IO.Path.Combine(Server.MapPath("uploads"), newFile); 

    if (fileNameApplication != String.Empty) 
    { 
     filePosted.SaveAs(filePath); 
    } 
} 

Đối Request.Files["uploadFieldNameFromHTML"] thiết lập ID trong HTML code ở đây:

<input type='file' id='...' /> 

Ngoài ra, đừng quên xác định runat="server" ở biểu mẫu chính trong trang ASPX, tốt hơn là đặt nó ở dạng chính và đừng quên tham số enctype="multipart/form-data" của <form>:

<body> 
    <form enctype="multipart/form-data" id="form1" runat="server"> 
     <input type='file' id='uploadFieldNameFromHTML' /> 
... 
+0

Tìm kiếm điều này từ một thời gian dài. :) cảm ơn vì sự giúp đỡ – VarunJi

Các vấn đề liên quan