After weeks of tweaking I finally gave up. I just couldn\'t fix my multiple file upload on safari, which really bothered me because my code worked perfectly as it should on
I ran into the image.jpg problem with asp.net. It may benefit someone. I was appending a non-unique hash to each image file to tie it to the record in the db. Works fine on every platform (our users are using, anyway), except when using Safari. I just appended a hash and a unique three digit string I pulled from the seconds part of DateTime to string:
if (!string.IsNullOrEmpty(ViewState["HashId"].ToString()))
        {
            string filepath = Server.MapPath("~/docs/");
            HttpFileCollection uploadedFiles = Request.Files;
            Span1.Text = string.Empty;
            for (int i = 0; i < uploadedFiles.Count; i++)
            {
                HttpPostedFile userPostedFile = uploadedFiles[i];
                try
                {
                    if (userPostedFile.ContentLength > 0)
                    {
                        string timestamp = DateTime.UtcNow.ToString("fff",
                                             CultureInfo.InvariantCulture);
                        //Span1.Text += "File #" + (i + 1) + "
";
                        //Span1.Text += "File Content Type: " + userPostedFile.ContentType + "
";
                        //Span1.Text += "File Size: " + userPostedFile.ContentLength + "kb
";
                        //Span1.Text += "File Name: " + userPostedFile.FileName + "
";
                        userPostedFile.SaveAs(filepath + "\\" + ViewState["HashId"] + "_" + Path.GetFileName(timestamp + userPostedFile.FileName));
                       // Span1.Text += "Location where saved: " + filepath + "\\" + Path.GetFileName(userPostedFile.FileName) + "";
                        InsertFilename("~/docs/" + ViewState["HashId"] + "_" + Path.GetFileName(timestamp + userPostedFile.FileName), ViewState["HashId"] + "_" + Path.GetFileName(timestamp + userPostedFile.FileName));
                    }
                }
                catch (Exception Ex)
                {
                    Span1.Text += "Error: 
" + Ex.Message;
                }
            }
            BindImages();
            SetAttchBitTrue();
            Button4.Visible = true;
            AttchStatus.Text = "This Record Has Attachments";
            Button2.Visible = true;
            Button3.Visible = true;
            Panel1.Visible = false;
        }  
May be a better way, but we just have a small number of people uploading one - two, maybe three images per record in the database. Should work.