|
Yes, this can be tricky - it took me years to come up with a decent solution. Client side, here's a .js function I cribbed together from various things I found here on CP over the years - attach it to the onchange event of your Fileupload control
function checkFile(what, mb, iLen, types) {
var msg = '';
var source = what.value;
var i = source.lastIndexOf('\');
var j = source.lastIndexOf('.');
var fName = source.substring(i + 1, j);
var ext = source.substring(source.lastIndexOf(".") + 1, source.length).toLowerCase();
var exts = types.split(',');
var fileTypeAllowed = false;
for (var k = 0; k < exts.length; k++) {
if (ext == exts[k]) {
fileTypeAllowed = true;
break;
}
}
if (fileTypeAllowed == true) {
var regex = /^[A-Za-z0-9_ -]{1,1024}$/;
if (!regex.test(fName)) {
msg = 'The file name contains illegal characters\n Please re-name the file using only alphanumeric characters, hyphens, spaces and underscores\n';
}
} else {
msg = 'Please upload files of the following types only:\n ' + types + '\n';
}
if ((iLen > 0) && (fName.length > iLen)) {
msg += 'The file name is too long\n Please restrict it to ' + iLen.toString() + ' characters.\n';
}
var fileSize = what.files[0].size;
var iMax = mb * 1024 * 1000;
if (!((fileSize > 0) && (fileSize <= iMax))) {
msg += "The file size should be greater than 0 and less than " + mb.toString() + "MB\n";
}
if (!(msg == '')) { what.value = null; alert(msg + '\n' + fName + '.' + ext); }
}
Server side, you can add this to the Application_BeginRequest event in global.asax (VB code) - after adjusting the number of bytes according to what you want
Dim sUrl As String = Request.Url.ToString.ToLower
If Request.ContentLength > 4096000 Then
Response.Redirect([full path to some nice error page])
End If
Hope this helps.
|
|
|
|
|
Thanks it worked for me buddy .
Thanks,
Abdul Aleem
"There is already enough hatred in the world lets spread love, compassion and affection."
|
|
|
|
|
|
Oh! OK, ta - still, anyone still using IE9 or earlier does so at their own risk, IMO, so tough!
|
|
|
|
|
I joined as a fresher in one of the company.They are not providing training to me.So, they are telling to learn your self own.How can i gain more knowledge on these technologies like C#.net,Asp.net MVC,Jquery,Angular js.So, i need tasks which can i improve my knowledge.Is there articles or material which is useful to me just mail me machamanikanta222@gmail.com
|
|
|
|
|
|
Thanks for your reply.But i need C# with Asp.net mvc using 3-tier architecture sample examples.
|
|
|
|
|
Yes, I understand that, but it is your job to go and look for them. If you aspire to be a developer then you need to spend a lot of time searching for information yourself, studying it, and working to improve your skills.
|
|
|
|
|
|
Goto http://asp.net there are tons of stuff there
<tag>I have no tag
|
|
|
|
|
Do. google, you will get lots of tutorials sites like asp.net, w3schools,tutorialspoint, codeproject etc.
But one think that keep in your mind, you have to practice yourself in continue basis.Only you can help or improve yourself.
|
|
|
|
|
Has anyone looked at combining the above as a quick method of providing a Win10 Metro UI interface to a website?
I have incorporated the Metro-UI News Portal Template into a standard ASP.NET MVC project. It is giving me a jQuery error when I run it. However, if I just select continue, the web page is displayed correctly. Hmmm?
|
|
|
|
|
Hi All,
I am saving a word document in database as bytes and in another column I am saving the file name, I am providing a link button or an anchor tag for the user to select when the user clicks on it the user should be able to see the file opened in another browser window.
Can you anybody please help me on it a little bit any code snippet, a link or even a suggestion would help me a lot. I am also searching but asking if somebody can guide me in a right direction.
Thanks in advance.
Thanks,
Abdul Aleem
"There is already enough hatred in the world lets spread love, compassion and affection."
|
|
|
|
|
|
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;
}
}
|
|
|
|
|