|
|
Hi I tried this way but it shows me the document in binary format
protected void Page_Load(object sender, EventArgs e)
{
Investigator _objInvestigator = new Investigator();
InvestigatorService _objinvestigatorService = new InvestigatorService();
int InvestigatorId;
InvestigatorId = ((Session["InvestigatorId"] != null) && int.TryParse(Session["InvestigatorId"].ToString(), out InvestigatorId)) ? InvestigatorId : 0;
_objInvestigator = _objinvestigatorService.GetByInvestigatorId(InvestigatorId);
if (_objInvestigator != null)
{
if ((_objInvestigator.CvFile != null) && !string.IsNullOrEmpty(_objInvestigator.CvFileNameWithExt))
{
String ext = System.IO.Path.GetExtension(_objInvestigator.CvFileNameWithExt);
Response.ContentType = "application/" + ext;
Response.AddHeader("content-length", _objInvestigator.CvFile.Length.ToString());
Response.BinaryWrite(_objInvestigator.CvFile);
}
}
}
And this the code for link button click
protected void loadFile_Click(object sender, EventArgs e)
{
Response.Write(string.Format("<script>window.open('{0}','_blank');</script>", "TheFile.aspx"));
}
Any suggestions please?
Thanks,
Abdul Aleem
"There is already enough hatred in the world lets spread love, compassion and affection."
|
|
|
|
|
what is the file's extension? .doc or .docx
I think it is your content type that is incorrect
If the extension is .doc, the content type should be application/msword and if your extension is .docx, the content type should be application/vnd.openxmlformats-officedocument.wordprocessingml.document
|
|
|
|
|
The content type can be three 1. doc, 2. docx and then .pdf but I think I pretty much got answer from you but if you can just give me whats the type for the pdf.
Thanks buddy.
Thanks,
Abdul Aleem
"There is already enough hatred in the world lets spread love, compassion and affection."
|
|
|
|
|
Just asking is there no way that I can give a rating for your answer? If there is any I would like to give you excellent answer rating
Thanks,
Abdul Aleem
"There is already enough hatred in the world lets spread love, compassion and affection."
|
|
|
|
|
Hey buddy still docx is showing binary data doesn't look good to humans man.
Here is the code, can you please let me know where did I do mistake?
Investigator _objInvestigator = new Investigator();
InvestigatorService _objinvestigatorService = new InvestigatorService();
int InvestigatorId;
InvestigatorId = ((Session["InvestigatorId"] != null) && int.TryParse(Session["InvestigatorId"].ToString(), out InvestigatorId)) ? InvestigatorId : 0;
_objInvestigator = _objinvestigatorService.GetByInvestigatorId(InvestigatorId);
if (_objInvestigator != null)
{
if ((_objInvestigator.CvFile != null) && !string.IsNullOrEmpty(_objInvestigator.CvFileNameWithExt))
{
String ext = System.IO.Path.GetExtension(_objInvestigator.CvFileNameWithExt);
if (ext.ToLower() == ".doc")
{
Response.ContentType = "application/" + "msword";
Response.AddHeader("content-length", _objInvestigator.CvFile.Length.ToString());
Response.BinaryWrite(_objInvestigator.CvFile);
}
else if(ext.ToLower() == ".docx")
{
Response.ContentType = "application/" + "vnd.openxmlformats-officedocument.wordprocessingml.document";
Response.AddHeader("content-length", _objInvestigator.CvFile.Length.ToString());
Response.BinaryWrite(_objInvestigator.CvFile);
}
else if (ext.ToLower() == ".pdf")
{
Response.ContentType = "application/" + ext;
Response.AddHeader("content-length", _objInvestigator.CvFile.Length.ToString());
Response.BinaryWrite(_objInvestigator.CvFile);
}
}
}
Thanks,
Abdul Aleem
"There is already enough hatred in the world lets spread love, compassion and affection."
|
|
|
|
|
Are you able to open pdf files or is it also showing binnary?
|
|
|
|
|
Yes it was showing in binary but I resolved it buddy
Thanks,
Abdul Aleem
"There is already enough hatred in the world lets spread love, compassion and affection."
|
|
|
|
|
You can add target="_blank" to you hyperlink button and set the button to navigate to a generic handler that will get the file from your database and display it.
|
|
|
|
|
So I'm writing a new function to resize images for my MVC App.
This time, instead of reading the disk drive, and writing back, I thought I would just take the upload file stream as bytes and pump into this function.
So the way I was doing it before, was to
Read the Image,
Create a Bitmap Canvas
Create a Graphics resized with the Image
Write the Image to the Bitmap.
Save As File
So I'm down to the last step, save as something so I can save as bytes. Before I just wrote to the disk drive, but now I want to stuff it back into the database.
Am I going about this all wrong?
This is an example off the top of my head, it's been condensed to show what I'm doing.
public static byte[] resise(byte[] pBytes)
{
MemoryStream ms_in = new MemoryStream(pBytes);
Image requestObj = Image.FromStream(ms_in);
Image bitmapObj = new Bitmap(t_Width, t_Height, PixelFormat.Format24bppRgb);
Graphics graphicObj = Graphics.FromImage(bitmapObj);
graphicObj.DrawImage(bitmapObj, xWidth, xHeight, t_Width, t_Height);
graphicObj.Save(ms_out);
return ms_out.ToArray();
}
|
|
|
|
|
I think I interpreted the Graphics Object wrong.
It's just a processor, that converts, the Bitmap is the object or image.
I don't have the whole thing working yet, but I think it will, but I do see bytes in the output.
And I think I used using correctly on the Graphics processor, not sure about disposing of some of the other stuff.
It's been years since I wrote an image resizer, but I did it in VB last.
public static model_image_object smtpHeader_resize(string pName, byte[] pBytes)
{
const int t_Width = 650;
const int t_Height = 146;
model_image_object pResult = new model_image_object();
MemoryStream ms_out = new MemoryStream();
MemoryStream ms_in = new MemoryStream(pBytes);
Image requestObj = Image.FromStream(ms_in);
int oWidth = requestObj.Width;
int oHeight = requestObj.Height;
int cHeight = 0;
int cWidth = 0;
Image bitmapObj = new Bitmap(t_Width, t_Height, PixelFormat.Format24bppRgb);
using (Graphics graphicObj = Graphics.FromImage(bitmapObj))
{
graphicObj.Clear(Color.Transparent);
graphicObj.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.Default;
graphicObj.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High;
if (oWidth > t_Width)
{
cWidth = t_Width;
cHeight = (int)Math.Round((oHeight / (float)oWidth) * t_Width);
}
else if (oHeight > t_Height)
{
cHeight = t_Height;
cWidth = (int)Math.Round((oWidth / (float)oHeight) * t_Height);
}
int xLeft = (cWidth - t_Width) / 2;
int xTop = (cHeight - t_Height) / 2;
graphicObj.DrawImage(bitmapObj, xLeft, xTop, t_Width, t_Height);
bitmapObj.Save(ms_out, ImageFormat.Png);
}
pResult.Data = ms_out.ToArray();
pResult.Name = pName;
pResult.Type = "image/png";
pResult.Size = new model_image_type_size();
pResult.Size.Height = cHeight;
pResult.Size.Width = cWidth;
return pResult;
}
|
|
|
|
|
I case your reading this, to figure out how to do it, this is what worked for me, but it needs more refinement such as disposing.
So I guess I'm down to just disposing of the object, but I need to make sure I preserve 1 of them to pass back to the Controller.
public static model_image_object smtpHeader_resize(string pName, byte[] pBytes)
{
const int t_Width = 650;
const int t_Height = 146;
model_image_object pResult = new model_image_object();
Stream stream_in = new MemoryStream(pBytes);
MemoryStream ms_out = new MemoryStream();
Image image_in = Image.FromStream(stream_in);
image_in.Save(System.Web.HttpContext.Current.Server.MapPath("~/Images/smtp/image_in.png"));
int oWidth = image_in.Width;
int oHeight = image_in.Height;
int cHeight = 0;
int cWidth = 0;
Bitmap bitmapObj = new Bitmap(t_Width, t_Height, PixelFormat.Format24bppRgb);
using (Graphics graphicObj = Graphics.FromImage(bitmapObj))
{
graphicObj.Clear(Color.Transparent);
graphicObj.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.Default;
graphicObj.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High;
if (oWidth > t_Width)
{
cWidth = t_Width;
cHeight = (int)Math.Round((oHeight / (float)oWidth) * t_Width);
}
else if (oHeight > t_Height)
{
cHeight = t_Height;
cWidth = (int)Math.Round((oWidth / (float)oHeight) * t_Height);
}
int x = (cWidth - t_Width) / 2;
int y = (cHeight - t_Height) / 2;
graphicObj.DrawImage(image_in, x, y, t_Width, t_Height);
graphicObj.Save();
}
bitmapObj.Save(System.Web.HttpContext.Current.Server.MapPath("~/Images/smtp/bitmap_out.png"));
bitmapObj.Save(ms_out, ImageFormat.Png);
pResult.Data = ms_out.ToArray();
pResult.Name = pName;
pResult.Type = "image/png";
pResult.Size = new model_image_type_size();
pResult.Size.Height = cHeight;
pResult.Size.Width = cWidth;
return pResult;
}
}
|
|
|
|
|
Hi All,
I am working with Telerik Ajax Controls called RadWindow, RadBinaryImage, RadAsyncUpload and RadImageEditor, all these are working fine on my local machine, when I deploy app on the server, the controls are not working. These controls are in a separate page which actually opens as a Popup. And when I deploy the Application on the Server it stops working I am not sure is it because of the Version mismatch of the Telerik Controls. Is there any way to validate it? or is there any way I can Xcopy the application files and set that my application should use Local copy of the Telerik dlls.
I doubt it should the same reason because sometime before it gave the similar problems because of the mismatch. Thank you.
Thanks,
Abdul Aleem
"There is already enough hatred in the world lets spread love, compassion and affection."
|
|
|
|
|
Make sure the appropriate .NET also exists on the server.
You also most likely need to modify the folder permissions on the server. Make sure that IIS_IUSRS (or the service account, if appropriate) has the appropriate permissions per folder, I'm sure that the Telerik documentation has those details.
|
|
|
|
|
Yeah thank you that part is working when I say browse by going into the application, but some CSS is missing may be I am guessing that JavaScript/CSS/Images aren't fully loading.
Thanks,
Abdul Aleem
"There is already enough hatred in the world lets spread love, compassion and affection."
|
|
|
|
|
Which is easier to work, its MVC using Asp or MVC using Razor ???
|
|
|
|
|
Depends on who you ask. I suggest you go through articles on the topic and find what you are more comfortable with.
There are only 10 types of people in the world, those who understand binary and those who don't.
|
|
|
|
|
Use Razor, the asp.net engine is well deprecated.
|
|
|
|
|
Smart tags are a cruel joke on the unwary.
Razor is simplistic and fully supports separation of concerns.
Easy pick.
|
|
|
|
|
Razor would be better as compared to ASP engine. Firstly razor syntax is easy to learn and use.
Razor uses @ symbol but asp uses <%: %> to write code in view page. Razor is very compact and helps to reduce typing. Razor helps to prevent XSS attack in view page.
Now a days mostly developers are using Razors as compared to asp.
modified 27-Feb-16 2:21am.
|
|
|
|
|
Razor will be best.
|
|
|
|
|
I have the following index-method in my homecontroller:
var homeIndexModel = new HomeIndexModel()
{
ActiveTasks = tasks.Where(
task =>
task.TaskStatus != TaskStatusEnum.Deferred &&
task.TaskStatus != TaskStatusEnum.Verified && task.TaskStatus != TaskStatusEnum.Resolved),
ClosedTasks = tasks.Where(
task =>
task.TaskStatus == TaskStatusEnum.Resolved),
DeferredTasks = tasks.Where(
task =>
task.TaskStatus == TaskStatusEnum.Verified ||
task.TaskStatus == TaskStatusEnum.Deferred),
Rules = m_errandSvc.GetAllRules(),
Sources =
Enum.GetValues(typeof(TaskSourceEnum)).Cast<TaskSourceEnum>().AsEnumerable().OrderBy(taskSource => taskSource.AsString()),
Types =
Enum.GetValues(typeof(TaskTypeEnum)).Cast<TaskTypeEnum>().AsEnumerable().OrderBy(taskSource => taskSource.AsString()),
Counties = counties,
Reports = null,
};
return this.View(homeIndexModel);
This homeIndexModel Is passed to the view when you visit the firstpage. As you can see, I assaign a Report-object to null.
I want to use thise Report-property of homeIndexModel when I do a search On the firstpage. When I hit "Search", a modal should appear and the search result printed out.
Here Is my search-method in the controller:
[HttpPost]
public ActionResult SearchReport(string searchVal, string searchParam)
{
var reports = m_errandSvc.GetReportSearch(searchVal, searchParam).ToList();
var homeIndexModel = new HomeIndexModel()
{
Reports = reports
};
return this.View(homeIndexModel);
}
As you can see, I assaign the Report-property with the result of GetReportSearch. I want to loop through this object below:
<!-- Modal -->
<div class="modal" id="myModalSearch" aria-hidden="true" data-keyboard="false" data-backdrop="static">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-body">
<div class="panel panel-default">
<div class="panel-heading">
<h4>FISH</h4>
@if (Model.Reports != null)
{
}
</div>
</div>
</div>
</div>
</div>
</div>
The problem I have is that when I add a foreach, like this below, my debug-mode quits.
@if (Model.Reports != null)
{
foreach(var itm in Model.Reports)
{
<div>@itm.Report_id</div>
<div>@itm.ReportSource</div>
}
}
How can I solve this whole thing with homeIndexViewModel and print out my search-result as I want to?
|
|
|
|
|
You do this in a lot of ways.
If you want to use server-side code (namely Razor) to build your view and absolutely have to embed your reports in the homeIndexModel, then you'll need to perform a postback and add an optional search term to your Index action (or whatever you have your default action named).
public ActionResult Index(string searchVal = null, string searchParam = null)
{
...
var homeIndexModel = new HomeIndexModel()
{
ActiveTasks = tasks.Where(
task =>
task.TaskStatus != TaskStatusEnum.Deferred &&
task.TaskStatus != TaskStatusEnum.Verified && task.TaskStatus != TaskStatusEnum.Resolved),
ClosedTasks = tasks.Where(
task =>
task.TaskStatus == TaskStatusEnum.Resolved),
DeferredTasks = tasks.Where(
task =>
task.TaskStatus == TaskStatusEnum.Verified ||
task.TaskStatus == TaskStatusEnum.Deferred),
Rules = m_errandSvc.GetAllRules(),
Sources =
Enum.GetValues(typeof(TaskSourceEnum)).Cast<TaskSourceEnum>().AsEnumerable().OrderBy(taskSource => taskSource.AsString()),
Types =
Enum.GetValues(typeof(TaskTypeEnum)).Cast<TaskTypeEnum>().AsEnumerable().OrderBy(taskSource => taskSource.AsString()),
Counties = counties,
Reports = (val == null || parameters == null)
? null
: m_errandSvc.GetReportSearch(searchVal, searchParam).ToList();
};
return View(homeIndexModel);
}
You could also decouple the reports from the HomeIndexModel and send it down as a partial view, if you prefer to use AJAX but still want to use Razor.
|
|
|
|
|
Hi All,
I am using file upload I am trying get the uploaded file size in client script for IE and Chrome browsers I have been trying for it in the below ways. Can any body please help me with that, I have been with no luck so far. One of this approach worked on another application on the same machine and browser and now its not working when I put this on the original larger application.
Any help may be a code snippet, a link or even a suggestion helps.
function CheckImageTypeAndSizeAdd() {<br />
var fileName = $('input[type=file]').val();
alert(fileName);
var fileSize;
alert($('<%= fileUploadCurriculumVitaeAdd.ClientID %>').val);
<%-- $(function () {
$('<%= fileUploadCurriculumVitaeAdd.ClientID %>').change(function () {
var f = this.files[0]
fileSize = f.size;
if (f.size > 8388608 || f.fileSize > 8388608) {
alert("Allowed file size exceeded. (Max. 8 MB)")
this.value = null;
}
})
});--%>
try {
fileSize = aspFileUpload.files[0].size;
} catch (e) {
var objFSO = new ActiveXObject("Scripting.FileSystemObject");
var e = objFSO.getFile(fileName);
fileSize = e.size;
}
alert(fileSize);
var ext = fileName.substr(fileName.lastIndexOf('.') + 1).toLowerCase();
if (!(ext == "docx" || ext == "doc" || ext == "pdf")) {
errorLabel.innerHTML = "Invalid file type, must select a *.doc, *.docx, or *.pdf file.";
$('input[type=file]').val() = "No file chosen";
return false;
}
if (fileSize == -1) {
errorLabel.innerHTML = "Couldn't load doc file size. Please try to save again.";
$('input[type=file]').val() = "No file chosen";
return false;
}
else if (fileSize <= 2097152) {
errorLabel.innerHTML = fileName;
return true;
}
else {
var fileSize = (fileSize / 1048576);
errorLabel.innerHTML = "File is too large, must select file under 20 Mb. File Size: " + fileSize.toFixed(1).toString() + " Mb";
$('input[type=file]').val() = "No file chosen";
return false;
}
}
Thanks,
Abdul Aleem
"There is already enough hatred in the world lets spread love, compassion and affection."
|
|
|
|
|
Don't repost your questions, see my answer to your initial question, using ActiveX controls is going to work on very few machines, use the html5 file api instead. Or just google your problem and you'll easily find the answers, this is a common requirement.
|
|
|
|
|